From 8325748d29dc5b8baf15051927905a920e6490bc Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Sat, 27 Sep 2025 11:14:42 +0200 Subject: [PATCH] fix issues with $extra, use query parameter --- app/lib/core/routing/routes.browser.dart | 6 ++-- app/lib/core/routing/routes.g.dart | 42 ++++++++++++++++++++---- app/lib/presentation/main_app.dart | 4 +-- 3 files changed, 40 insertions(+), 12 deletions(-) diff --git a/app/lib/core/routing/routes.browser.dart b/app/lib/core/routing/routes.browser.dart index 81175f0e..e9907d95 100644 --- a/app/lib/core/routing/routes.browser.dart +++ b/app/lib/core/routing/routes.browser.dart @@ -80,12 +80,12 @@ class SearchRoute extends GoRouteData with $SearchRoute { //This should be nullable but isnt allowed by go_router final String searchText; - final bool $extra; + final bool launchedFromIntent; const SearchRoute({ required this.tabType, this.searchText = SearchRoute.emptySearchText, - this.$extra = false, + this.launchedFromIntent = false, }); @override @@ -95,7 +95,7 @@ class SearchRoute extends GoRouteData with $SearchRoute { initialSearchText: (searchText.isEmpty || searchText == emptySearchText) ? null : searchText, - launchedFromIntent: $extra, + launchedFromIntent: launchedFromIntent, ); } } diff --git a/app/lib/core/routing/routes.g.dart b/app/lib/core/routing/routes.g.dart index ddb896dc..436e92b7 100644 --- a/app/lib/core/routing/routes.g.dart +++ b/app/lib/core/routing/routes.g.dart @@ -353,7 +353,13 @@ mixin $SearchRoute on GoRouteData { tabType: _$TabTypeEnumMap._$fromName(state.pathParameters['tabType']!)!, searchText: state.pathParameters['searchText'] ?? SearchRoute.emptySearchText, - $extra: state.extra as bool, + launchedFromIntent: + _$convertMapValue( + 'launched-from-intent', + state.uri.queryParameters, + _$boolConverter, + ) ?? + false, ); SearchRoute get _self => this as SearchRoute; @@ -361,22 +367,24 @@ mixin $SearchRoute on GoRouteData { @override String get location => GoRouteData.$location( '/search/${Uri.encodeComponent(_$TabTypeEnumMap[_self.tabType]!)}/${Uri.encodeComponent(_self.searchText)}', + queryParams: { + if (_self.launchedFromIntent != false) + 'launched-from-intent': _self.launchedFromIntent.toString(), + }, ); @override - void go(BuildContext context) => context.go(location, extra: _self.$extra); + void go(BuildContext context) => context.go(location); @override - Future push(BuildContext context) => - context.push(location, extra: _self.$extra); + Future push(BuildContext context) => context.push(location); @override void pushReplacement(BuildContext context) => - context.pushReplacement(location, extra: _self.$extra); + context.pushReplacement(location); @override - void replace(BuildContext context) => - context.replace(location, extra: _self.$extra); + void replace(BuildContext context) => context.replace(location); } const _$TabTypeEnumMap = { @@ -592,6 +600,26 @@ mixin $OpenSharedContentRoute on GoRouteData { context.replace(location, extra: _self.$extra); } +T? _$convertMapValue( + String key, + Map map, + T? Function(String) converter, +) { + final value = map[key]; + return value == null ? null : converter(value); +} + +bool _$boolConverter(String value) { + switch (value) { + case 'true': + return true; + case 'false': + return false; + default: + throw UnsupportedError('Cannot convert "$value" into a bool.'); + } +} + extension on Map { T? _$fromName(String? value) => entries.where((element) => element.value == value).firstOrNull?.key; diff --git a/app/lib/presentation/main_app.dart b/app/lib/presentation/main_app.dart index eadd77f0..3664bd93 100644 --- a/app/lib/presentation/main_app.dart +++ b/app/lib/presentation/main_app.dart @@ -99,9 +99,9 @@ class MainApp extends HookConsumerWidget { ref.read(selectedTabTypeProvider) ?? settings.defaultCreateTabType, searchText: sharedContent.text, - $extra: true, //launched from intent + launchedFromIntent: true, //launched from intent ); - await router.push(route.location, extra: route.$extra); + await router.push(route.location); } } });