From dc5bb513605964f8842a89da877ccc380224697f Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Thu, 6 Apr 2023 15:38:18 -0400 Subject: [PATCH 1/5] Update versions of media_kit dependencies --- pubspec.lock | 80 ++++++++++++++++++++++++++-------------------------- 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index e4505a4..958ed19 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -293,10 +293,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: d8e9ca7e5d1983365c277f12c21b4362df6cf659c99af146ad4d04eb33033013 + sha256: "0d923fb610d0abf67f2149c3a50ef85f78bebecfc4d645719ca70bcf4abc788f" url: "https://pub.dev" source: hosted - version: "5.2.6" + version: "5.2.7" fixnum: dependency: transitive description: @@ -509,10 +509,10 @@ packages: dependency: "direct main" description: name: go_router - sha256: "432409518740645ce7f28802171b78783197d01149fad44f9b8ae55f40277139" + sha256: feab99a20fd248c658c923ba98f4449ca6e575c3dee9fdf07146f4f33482c6bc url: "https://pub.dev" source: hosted - version: "6.5.0" + version: "6.5.5" graphs: dependency: transitive description: @@ -565,10 +565,10 @@ packages: dependency: "direct main" description: name: image_picker - sha256: "64b21d9f0e065f9ab0e4dde458076226c97382cc0c6949144cb874c62bf8e9f8" + sha256: cb25f04595a88450970dbe727243ba8cd21b6f7e0d7d1fc5b789fc6f52e95494 url: "https://pub.dev" source: hosted - version: "0.8.7" + version: "0.8.7+1" image_picker_android: dependency: transitive description: @@ -589,10 +589,10 @@ packages: dependency: transitive description: name: image_picker_ios - sha256: "50e882fe0a06bf0c8f7f5bce78d30975f279213293afc9471dc35f05617c50ff" + sha256: d4cb8ab04f770dab9d04c7959e5f6d22e8c5280343d425f9344f93832cf58445 url: "https://pub.dev" source: hosted - version: "0.8.7+1" + version: "0.8.7+2" image_picker_platform_interface: dependency: transitive description: @@ -645,10 +645,10 @@ packages: dependency: "direct main" description: name: markdown - sha256: b3c60dee8c2af50ad0e6e90cceba98e47718a6ee0a7a6772c77846a0cc21f78b + sha256: d95a9d12954aafc97f984ca29baaa7690ed4d9ec4140a23ad40580bcdb6c87f5 url: "https://pub.dev" source: hosted - version: "7.0.1" + version: "7.0.2" matcher: dependency: transitive description: @@ -669,18 +669,18 @@ packages: dependency: "direct main" description: name: media_kit - sha256: "6b1e851865c2da3d84e93e8132ee0add32f604bf7fc211d019db9101a44c8608" + sha256: defc249a792bf39346e6ee3ec40bbe48685c54aab86a25c4c27cc54a99afb6b1 url: "https://pub.dev" source: hosted - version: "0.0.3+3" + version: "0.0.4+1" media_kit_libs_ios_video: dependency: "direct main" description: name: media_kit_libs_ios_video - sha256: "495d6e2db9b325aebda16dad3c5ae6593a9dfa37ebe08360b4765a43fa09a3b0" + sha256: a6ee06d466f539d161ef3b0c13f101713fd051d90c435a503420cb6a6f4c6e66 url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" media_kit_libs_linux: dependency: "direct main" description: @@ -693,10 +693,10 @@ packages: dependency: "direct main" description: name: media_kit_libs_macos_video - sha256: ff06adff5f544b11aa1d3ad596f9add477264c6026a60aebeed69eda1c7d9d63 + sha256: b3259875e201ec66d98ed33b32687ff14fcce7d91e74d420733c039556dff8cd url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.3" media_kit_libs_windows_video: dependency: "direct main" description: @@ -837,10 +837,10 @@ packages: dependency: transitive description: name: path_provider_foundation - sha256: "12eee51abdf4d34c590f043f45073adbb45514a108bd9db4491547a2fd891059" + sha256: "818b2dc38b0f178e0ea3f7cf3b28146faab11375985d815942a68eee11c2d0f7" url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.2.1" path_provider_linux: dependency: transitive description: @@ -981,58 +981,58 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "78528fd87d0d08ffd3e69551173c026e8eacc7b7079c82eb6a77413957b7e394" + sha256: "858aaa72d8f61637d64e776aca82e1c67e6d9ee07979123c5d17115031c1b13b" url: "https://pub.dev" source: hosted - version: "2.0.20" + version: "2.1.0" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: ad423a80fe7b4e48b50d6111b3ea1027af0e959e49d485712e134863d9c1c521 + sha256: "8304d8a1f7d21a429f91dee552792249362b68a331ac5c3c1caf370f658873f6" url: "https://pub.dev" source: hosted - version: "2.0.17" + version: "2.1.0" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "1e755f8583229f185cfca61b1d80fb2344c9d660e1c69ede5450d8f478fa5310" + sha256: cf2a42fb20148502022861f71698db12d937c7459345a1bdaa88fc91a91b3603 url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.0" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "3a59ed10890a8409ad0faad7bb2957dab4b92b8fbe553257b05d30ed8af2c707" + sha256: "9d387433ca65717bbf1be88f4d5bb18f10508917a8fa2fb02e0fd0d7479a9afa" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.0" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "824bfd02713e37603b2bdade0842e47d56e7db32b1dcdd1cae533fb88e2913fc" + sha256: fb5cf25c0235df2d0640ac1b1174f6466bd311f621574997ac59018a6664548d url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.2.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "0dc2633f215a3d4aa3184c9b2c5766f4711e4e5a6b256e62aafee41f89f1bfb8" + sha256: "74083203a8eae241e0de4a0d597dbedab3b8fef5563f33cf3c12d7e93c655ca5" url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.1.0" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "71bcd669bb9cdb6b39f22c4a7728b6d49e934f6cba73157ffa5a54f1eed67436" + sha256: "5e588e2efef56916a3b229c3bfe81e6a525665a454519ca51dbcc4236a274173" url: "https://pub.dev" source: hosted - version: "2.1.5" + version: "2.2.0" shelf: dependency: transitive description: @@ -1274,26 +1274,26 @@ packages: dependency: "direct main" description: name: video_player - sha256: "868a139229acb5018d22aded3eb9cb4767ff43a8216573c086b6c535a4957481" + sha256: de95f0e9405f29b5582573d4166132e71f83b3158aac14e8ee5767a54f4f1fbd url: "https://pub.dev" source: hosted - version: "2.6.0" + version: "2.6.1" video_player_android: dependency: transitive description: name: video_player_android - sha256: dc31c60ae591aa3ccb2d460c3690ceceb86cbb826e73428d817a37650dc4e229 + sha256: a592048a711d5739d9cea2255d425779f138d41095b9149bda60ce4bc1af8871 url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.4" video_player_avfoundation: dependency: transitive description: name: video_player_avfoundation - sha256: "90468226c8687adf7b567d9bb42c25588783c4d30509af1fbd663b2dd049f700" + sha256: af308d08c672d5ff718c60127665249617c37a709cb8f0a18dd28a0360299b7c url: "https://pub.dev" source: hosted - version: "2.4.2" + version: "2.4.3" video_player_platform_interface: dependency: transitive description: @@ -1306,10 +1306,10 @@ packages: dependency: transitive description: name: video_player_web - sha256: fb3bbeaf0302cb0c31340ebd6075487939aa1fe3b379d1a8784ef852b679940e + sha256: "44ce41424d104dfb7cf6982cc6b84af2b007a24d126406025bf40de5d481c74c" url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.0.16" watcher: dependency: transitive description: From 4f6efd663e0d42f7c51d442927d49836b746787b Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Thu, 6 Apr 2023 15:49:03 -0400 Subject: [PATCH 2/5] Update flutter_web_auth_2 to use the pub.dev version since supports linux now --- linux/flutter/generated_plugin_registrant.cc | 4 ++++ linux/flutter/generated_plugins.cmake | 1 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 ++ pubspec.lock | 19 +++++++++++++------ pubspec.yaml | 6 +----- .../flutter/generated_plugin_registrant.cc | 3 +++ windows/flutter/generated_plugins.cmake | 1 + 7 files changed, 25 insertions(+), 11 deletions(-) diff --git a/linux/flutter/generated_plugin_registrant.cc b/linux/flutter/generated_plugin_registrant.cc index 6f4e824..6249bac 100644 --- a/linux/flutter/generated_plugin_registrant.cc +++ b/linux/flutter/generated_plugin_registrant.cc @@ -12,6 +12,7 @@ #include #include #include +#include void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) desktop_window_registrar = @@ -32,4 +33,7 @@ void fl_register_plugins(FlPluginRegistry* registry) { g_autoptr(FlPluginRegistrar) url_launcher_linux_registrar = fl_plugin_registry_get_registrar_for_plugin(registry, "UrlLauncherPlugin"); url_launcher_plugin_register_with_registrar(url_launcher_linux_registrar); + g_autoptr(FlPluginRegistrar) window_to_front_registrar = + fl_plugin_registry_get_registrar_for_plugin(registry, "WindowToFrontPlugin"); + window_to_front_plugin_register_with_registrar(window_to_front_registrar); } diff --git a/linux/flutter/generated_plugins.cmake b/linux/flutter/generated_plugins.cmake index e1c5756..dd5f438 100644 --- a/linux/flutter/generated_plugins.cmake +++ b/linux/flutter/generated_plugins.cmake @@ -9,6 +9,7 @@ list(APPEND FLUTTER_PLUGIN_LIST media_kit_video objectbox_flutter_libs url_launcher_linux + window_to_front ) list(APPEND FLUTTER_FFI_PLUGIN_LIST diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 305589f..571c08e 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -16,6 +16,7 @@ import path_provider_foundation import shared_preferences_foundation import sqflite import url_launcher_macos +import window_to_front func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { DesktopWindowPlugin.register(with: registry.registrar(forPlugin: "DesktopWindowPlugin")) @@ -29,4 +30,5 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SqflitePlugin.register(with: registry.registrar(forPlugin: "SqflitePlugin")) UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) + WindowToFrontPlugin.register(with: registry.registrar(forPlugin: "WindowToFrontPlugin")) } diff --git a/pubspec.lock b/pubspec.lock index 958ed19..11979e7 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -430,12 +430,11 @@ packages: flutter_web_auth_2: dependency: "direct main" description: - path: flutter_web_auth_2 - ref: add-linux-support - resolved-ref: ce43f48b3b6c0b055e3871eedf1feee1cbe1a2d9 - url: "https://github.com/HankG/flutter_web_auth_2.git" - source: git - version: "2.0.4" + name: flutter_web_auth_2 + sha256: "6aebfb1797bb1dd38cd32753832670482792e4f0b9cef0329d357f889dbf07c9" + url: "https://pub.dev" + source: hosted + version: "2.1.2" flutter_web_auth_2_platform_interface: dependency: transitive description: @@ -1334,6 +1333,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.3" + window_to_front: + dependency: transitive + description: + name: window_to_front + sha256: "7aef379752b7190c10479e12b5fd7c0b9d92adc96817d9e96c59937929512aee" + url: "https://pub.dev" + source: hosted + version: "0.0.3" xdg_directories: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 929bfce..c89d0c0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,11 +17,7 @@ dependencies: flutter_dotenv: ^5.0.2 flutter_file_dialog: ^3.0.0 flutter_secure_storage: ^8.0.0 - flutter_web_auth_2: - git: - url: https://github.com/HankG/flutter_web_auth_2.git - path: flutter_web_auth_2 - ref: add-linux-support + flutter_web_auth_2: ^2.1.2 flutter_widget_from_html_core: ^0.10.0 get_it: ^7.2.0 get_it_mixin: ^4.1.1 diff --git a/windows/flutter/generated_plugin_registrant.cc b/windows/flutter/generated_plugin_registrant.cc index 8e36776..75c7ec2 100644 --- a/windows/flutter/generated_plugin_registrant.cc +++ b/windows/flutter/generated_plugin_registrant.cc @@ -11,6 +11,7 @@ #include #include #include +#include void RegisterPlugins(flutter::PluginRegistry* registry) { DesktopWindowPluginRegisterWithRegistrar( @@ -23,4 +24,6 @@ void RegisterPlugins(flutter::PluginRegistry* registry) { registry->GetRegistrarForPlugin("ObjectboxFlutterLibsPlugin")); UrlLauncherWindowsRegisterWithRegistrar( registry->GetRegistrarForPlugin("UrlLauncherWindows")); + WindowToFrontPluginRegisterWithRegistrar( + registry->GetRegistrarForPlugin("WindowToFrontPlugin")); } diff --git a/windows/flutter/generated_plugins.cmake b/windows/flutter/generated_plugins.cmake index e0e6829..f149558 100644 --- a/windows/flutter/generated_plugins.cmake +++ b/windows/flutter/generated_plugins.cmake @@ -8,6 +8,7 @@ list(APPEND FLUTTER_PLUGIN_LIST media_kit_video objectbox_flutter_libs url_launcher_windows + window_to_front ) list(APPEND FLUTTER_FFI_PLUGIN_LIST From bff179b11f3cba0820531916638ac6d693f02b6a Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Thu, 6 Apr 2023 15:49:25 -0400 Subject: [PATCH 3/5] Shift the suggestions to be on the top of the content field --- lib/screens/editor.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/screens/editor.dart b/lib/screens/editor.dart index 91546a8..dc82777 100644 --- a/lib/screens/editor.dart +++ b/lib/screens/editor.dart @@ -302,7 +302,7 @@ class _EditorScreenState extends State { return MultiTriggerAutocomplete( textEditingController: contentController, focusNode: focusNode, - optionsAlignment: OptionsAlignment.bottomEnd, + optionsAlignment: OptionsAlignment.top, autocompleteTriggers: [ AutocompleteTrigger( trigger: '@', From fe9a27be7ccc2ec7c565be89a98ff091229cd505 Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Thu, 6 Apr 2023 15:51:22 -0400 Subject: [PATCH 4/5] Overflowing videos fixed with v0.4.0 --- beta-program.md | 1 - 1 file changed, 1 deletion(-) diff --git a/beta-program.md b/beta-program.md index 0152555..6d6a19d 100644 --- a/beta-program.md +++ b/beta-program.md @@ -143,7 +143,6 @@ wanted to lay out some expectations before getting into the small details Comments for now (fixed on servers running Friendica 2023.03) * ALT text on images should not have any quotation marks as it breaks when federating over to Diaspora for the time being (fixed on servers running Friendica 2023.03) -* Portrait videos overflow their boxes in the timeline * Blocked/ignored user's content is still returned by the API (Fixed in Friendica 2023.03) * Paging for some of the endpoints either isn't wired in yet or is not working as needed server side. That includes things like: From 76da2ca3901c031c3b71dc6470e52a42dcb2556e Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Fri, 7 Apr 2023 08:55:37 -0400 Subject: [PATCH 5/5] Clicking on home button when on that screen scrolls it to the top --- CHANGELOG.md | 1 + beta-program.md | 1 + lib/controls/app_bottom_nav_bar.dart | 11 ++++++++++- lib/controls/timeline/timeline_panel.dart | 11 +++++++++-- lib/screens/home.dart | 9 ++++++--- 5 files changed, 27 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02497a2..b431ad8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ * The "copy text" action now copies the plain text not HTML version. So things like hashtags show up as "#hashtag" not the HTML code around it with the link reference etc. + * Clicking on the "Home" button if you already are on that screen scrolls to the top. * Fixes * New Features diff --git a/beta-program.md b/beta-program.md index 6d6a19d..10d23a0 100644 --- a/beta-program.md +++ b/beta-program.md @@ -120,6 +120,7 @@ wanted to lay out some expectations before getting into the small details * Nitter replacement of Twitter links * User configurable Server blocking * Server-side searching tied into profiles, posts, hashtags +* Smarter hashtag and user account storage/searching * Being able to ignore/unignore users * Deleting images and entire galleries * Events diff --git a/lib/controls/app_bottom_nav_bar.dart b/lib/controls/app_bottom_nav_bar.dart index c98265f..7f215db 100644 --- a/lib/controls/app_bottom_nav_bar.dart +++ b/lib/controls/app_bottom_nav_bar.dart @@ -17,8 +17,13 @@ enum NavBarButtons { class AppBottomNavBar extends StatelessWidget { static final _logger = Logger('$AppBottomNavBar'); final NavBarButtons currentButton; + final Function()? onHomeButtonReclick; - const AppBottomNavBar({super.key, required this.currentButton}); + const AppBottomNavBar({ + super.key, + required this.currentButton, + this.onHomeButtonReclick, + }); @override Widget build(BuildContext context) { @@ -36,6 +41,10 @@ class AppBottomNavBar extends StatelessWidget { onTap: (index) { final newButton = _indexToButton(index); if (newButton == currentButton) { + if (newButton == NavBarButtons.timelines && + onHomeButtonReclick != null) { + onHomeButtonReclick!(); + } return; } diff --git a/lib/controls/timeline/timeline_panel.dart b/lib/controls/timeline/timeline_panel.dart index 00914a5..d8fe46e 100644 --- a/lib/controls/timeline/timeline_panel.dart +++ b/lib/controls/timeline/timeline_panel.dart @@ -1,6 +1,7 @@ import 'package:flutter/material.dart'; import 'package:logging/logging.dart'; import 'package:provider/provider.dart'; +import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import '../../models/TimelineIdentifiers.dart'; import '../../services/timeline_manager.dart'; @@ -10,8 +11,9 @@ import 'post_control.dart'; class TimelinePanel extends StatelessWidget { static final _logger = Logger('$TimelinePanel'); final TimelineIdentifiers timeline; + final controller = ItemScrollController(); - const TimelinePanel({super.key, required this.timeline}); + TimelinePanel({super.key, required this.timeline}); Future update(TimelineManager manager) async { await manager.updateTimeline( @@ -25,6 +27,10 @@ class TimelinePanel extends StatelessWidget { ); } + void scrollToTop() { + controller.jumpTo(index: 0); + } + @override Widget build(BuildContext context) { _logger.finer('Build'); @@ -50,7 +56,8 @@ class TimelinePanel extends StatelessWidget { ], ), ) - : ListView.builder( + : ScrollablePositionedList.builder( + itemScrollController: controller, physics: const AlwaysScrollableScrollPhysics(), itemBuilder: (context, index) { if (index == 0) { diff --git a/lib/screens/home.dart b/lib/screens/home.dart index cd97db0..aae2406 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -78,6 +78,8 @@ class _HomeScreenState extends State { currentGroup = null; } + final timeline = TimelinePanel(timeline: currentTimeline); + return Scaffold( appBar: AppBar( leading: accountService.loggedIn @@ -150,13 +152,14 @@ class _HomeScreenState extends State { child: Column( children: [ StandardLinearProgressIndicator(nss.timelineLoadingStatus), - Expanded(child: TimelinePanel(timeline: currentTimeline)), + Expanded(child: timeline), ], ), ), - drawer: StandardAppDrawer(), - bottomNavigationBar: const AppBottomNavBar( + drawer: const StandardAppDrawer(), + bottomNavigationBar: AppBottomNavBar( currentButton: NavBarButtons.timelines, + onHomeButtonReclick: () => timeline.scrollToTop(), ), floatingActionButton: FloatingActionButton.small( onPressed: () {