From c82274ea012c3a7d7a079749b72d31a11d338a59 Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Wed, 19 Feb 2025 22:55:18 +0100 Subject: [PATCH] split routes --- app/lib/core/routing/routes.bangs.dart | 73 ++ app/lib/core/routing/routes.browser.dart | 99 +++ app/lib/core/routing/routes.dart | 292 +------- app/lib/core/routing/routes.g.dart | 790 +++++++++++----------- app/lib/core/routing/routes.settings.dart | 74 ++ 5 files changed, 630 insertions(+), 698 deletions(-) create mode 100644 app/lib/core/routing/routes.bangs.dart create mode 100644 app/lib/core/routing/routes.browser.dart create mode 100644 app/lib/core/routing/routes.settings.dart diff --git a/app/lib/core/routing/routes.bangs.dart b/app/lib/core/routing/routes.bangs.dart new file mode 100644 index 00000000..ec93d40e --- /dev/null +++ b/app/lib/core/routing/routes.bangs.dart @@ -0,0 +1,73 @@ +part of 'routes.dart'; + +@TypedGoRoute( + name: 'BangRoute', + path: 'bangs', + routes: [ + TypedGoRoute( + name: 'BangSearchRoute', + path: 'search/:searchText', + ), + TypedGoRoute( + name: 'BangCategoryRoute', + path: 'category/:category', + routes: [ + TypedGoRoute( + name: 'BangSubCategoryRoute', + path: ':subCategory', + ), + ], + ), + ], +) +class BangCategoriesRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const BangCategoriesScreen(); + } +} + +class BangCategoryRoute extends GoRouteData { + final String category; + + const BangCategoryRoute({required this.category}); + + @override + Widget build(BuildContext context, GoRouterState state) { + return BangListScreen(category: category); + } +} + +class BangSubCategoryRoute extends GoRouteData { + final String category; + final String subCategory; + + const BangSubCategoryRoute({ + required this.category, + required this.subCategory, + }); + + @override + Widget build(BuildContext context, GoRouterState state) { + return BangListScreen(category: category, subCategory: subCategory); + } +} + +class BangSearchRoute extends GoRouteData { + static const String emptySearchText = ' '; + + //This should be nullable but isnt allowed by go_router + final String searchText; + + const BangSearchRoute({this.searchText = BangSearchRoute.emptySearchText}); + + @override + Widget build(BuildContext context, GoRouterState state) { + return BangSearchScreen( + initialSearchText: + (searchText.isEmpty || searchText == emptySearchText) + ? null + : searchText, + ); + } +} diff --git a/app/lib/core/routing/routes.browser.dart b/app/lib/core/routing/routes.browser.dart new file mode 100644 index 00000000..0ccf6a02 --- /dev/null +++ b/app/lib/core/routing/routes.browser.dart @@ -0,0 +1,99 @@ +part of 'routes.dart'; + +@TypedGoRoute( + name: 'BrowserRoute', + path: '/', + routes: [ + TypedGoRoute(name: 'WebPageRoute', path: 'page/:url'), + TypedGoRoute(name: 'SearchRoute', path: 'search/:searchText'), + TypedGoRoute(name: 'TorProxyRoute', path: 'tor_proxy'), + TypedGoRoute( + name: 'ContainerListRoute', + path: 'containers', + routes: [ + TypedGoRoute( + name: 'ContainerCreateRoute', + path: 'create', + ), + TypedGoRoute( + name: 'ContainerEditRoute', + path: 'edit', + ), + ], + ), + ], +) +class BrowserRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const BrowserScreen(); + } +} + +class WebPageRoute extends GoRouteData { + final String url; + + const WebPageRoute({required this.url}); + + @override + Page buildPage(BuildContext context, GoRouterState state) { + return DialogPage( + builder: + (_) => WebPageDialog( + url: Uri.parse(url), + precachedInfo: state.extra as WebPageInfo?, + ), + ); + } +} + +class SearchRoute extends GoRouteData { + static const String emptySearchText = ' '; + + //This should be nullable but isnt allowed by go_router + final String searchText; + + const SearchRoute({this.searchText = SearchRoute.emptySearchText}); + + @override + Widget build(BuildContext context, GoRouterState state) { + return SearchScreen( + initialSearchText: + (searchText.isEmpty || searchText == emptySearchText) + ? null + : searchText, + ); + } +} + +class TorProxyRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const TorProxyScreen(); + } +} + +class ContainerListRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const ContainerListScreen(); + } +} + +class ContainerEditRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return ContainerEditScreen.edit( + initialContainer: state.extra! as ContainerData, + ); + } +} + +class ContainerCreateRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return ContainerEditScreen.create( + initialContainer: state.extra! as ContainerData, + ); + } +} diff --git a/app/lib/core/routing/routes.dart b/app/lib/core/routing/routes.dart index 0cc96744..fcafb273 100644 --- a/app/lib/core/routing/routes.dart +++ b/app/lib/core/routing/routes.dart @@ -6,9 +6,6 @@ import 'package:lensai/features/about/presentation/screens/about.dart'; import 'package:lensai/features/bangs/presentation/screens/categories.dart'; import 'package:lensai/features/bangs/presentation/screens/list.dart'; import 'package:lensai/features/bangs/presentation/screens/search.dart'; -import 'package:lensai/features/chat_archive/presentation/screens/detail.dart'; -import 'package:lensai/features/chat_archive/presentation/screens/list.dart'; -import 'package:lensai/features/chat_archive/presentation/screens/search.dart'; import 'package:lensai/features/geckoview/features/browser/presentation/dialogs/web_page_dialog.dart'; import 'package:lensai/features/geckoview/features/browser/presentation/screens/browser.dart'; import 'package:lensai/features/geckoview/features/search/presentation/screens/search.dart'; @@ -25,75 +22,11 @@ import 'package:lensai/features/tor/presentation/screens/tor_proxy.dart'; import 'package:lensai/features/user/presentation/screens/auth.dart'; part 'routes.g.dart'; +part 'routes.settings.dart'; +part 'routes.browser.dart'; +part 'routes.bangs.dart'; -@TypedGoRoute( - name: 'BrowserRoute', - path: '/', - routes: [ - TypedGoRoute(name: 'WebPageRoute', path: 'page/:url'), - TypedGoRoute(name: 'AboutRoute', path: 'about'), - TypedGoRoute(name: 'UserAuthRoute', path: 'userAuth'), - TypedGoRoute(name: 'SearchRoute', path: 'search/:searchText'), - TypedGoRoute( - name: 'BangRoute', - path: 'bangs', - routes: [ - TypedGoRoute( - name: 'BangSearchRoute', - path: 'search/:searchText', - ), - TypedGoRoute( - name: 'BangCategoryRoute', - path: 'category/:category', - routes: [ - TypedGoRoute( - name: 'BangSubCategoryRoute', - path: ':subCategory', - ), - ], - ), - ], - ), - TypedGoRoute( - name: 'ContainerListRoute', - path: 'containers', - routes: [ - TypedGoRoute( - name: 'ContainerCreateRoute', - path: 'create', - ), - TypedGoRoute( - name: 'ContainerEditRoute', - path: 'edit', - ), - ], - ), - ], -) -class BrowserRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const BrowserScreen(); - } -} - -class WebPageRoute extends GoRouteData { - final String url; - - const WebPageRoute({required this.url}); - - @override - Page buildPage(BuildContext context, GoRouterState state) { - return DialogPage( - builder: - (_) => WebPageDialog( - url: Uri.parse(url), - precachedInfo: state.extra as WebPageInfo?, - ), - ); - } -} - +@TypedGoRoute(name: 'AboutRoute', path: 'about') class AboutRoute extends GoRouteData { @override Page buildPage(BuildContext context, GoRouterState state) { @@ -101,225 +34,10 @@ class AboutRoute extends GoRouteData { } } +@TypedGoRoute(name: 'UserAuthRoute', path: 'userAuth') class UserAuthRoute extends GoRouteData { @override Page buildPage(BuildContext context, GoRouterState state) { return DialogPage(builder: (_) => const UserAuthScreen()); } } - -class SearchRoute extends GoRouteData { - static const String emptySearchText = ' '; - - //This should be nullable but isnt allowed by go_router - final String searchText; - - const SearchRoute({this.searchText = SearchRoute.emptySearchText}); - - @override - Widget build(BuildContext context, GoRouterState state) { - return SearchScreen( - initialSearchText: - (searchText.isEmpty || searchText == emptySearchText) - ? null - : searchText, - ); - } -} - -class BangCategoriesRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const BangCategoriesScreen(); - } -} - -class BangCategoryRoute extends GoRouteData { - final String category; - - const BangCategoryRoute({required this.category}); - - @override - Widget build(BuildContext context, GoRouterState state) { - return BangListScreen(category: category); - } -} - -class BangSubCategoryRoute extends GoRouteData { - final String category; - final String subCategory; - - const BangSubCategoryRoute({ - required this.category, - required this.subCategory, - }); - - @override - Widget build(BuildContext context, GoRouterState state) { - return BangListScreen(category: category, subCategory: subCategory); - } -} - -class BangSearchRoute extends GoRouteData { - static const String emptySearchText = ' '; - - //This should be nullable but isnt allowed by go_router - final String searchText; - - const BangSearchRoute({this.searchText = BangSearchRoute.emptySearchText}); - - @override - Widget build(BuildContext context, GoRouterState state) { - return BangSearchScreen( - initialSearchText: - (searchText.isEmpty || searchText == emptySearchText) - ? null - : searchText, - ); - } -} - -class ContainerListRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const ContainerListScreen(); - } -} - -class ContainerEditRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return ContainerEditScreen.edit( - initialContainer: state.extra! as ContainerData, - ); - } -} - -class ContainerCreateRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return ContainerEditScreen.create( - initialContainer: state.extra! as ContainerData, - ); - } -} - -@TypedGoRoute( - name: 'SettingsRoute', - path: '/settings', - routes: [ - TypedGoRoute( - name: 'GeneralSettingsRoute', - path: 'general', - ), - TypedGoRoute(name: 'BangSettingsRoute', path: 'bang'), - TypedGoRoute( - name: 'WebEngineSettingsRoute', - path: 'web_engine', - routes: [ - TypedGoRoute( - name: 'WebEngineHardeningRoute', - path: 'hardening', - routes: [ - TypedGoRoute( - name: 'WebEngineHardeningGroupRoute', - path: 'group/:group', - ), - ], - ), - ], - ), - ], -) -class SettingsRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const SettingsScreen(); - } -} - -class GeneralSettingsRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const GeneralSettingsScreen(); - } -} - -class BangSettingsRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const BangSettingsScreen(); - } -} - -class WebEngineSettingsRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const WebEngineSettingsScreen(); - } -} - -class WebEngineHardeningRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const WebEngineHardeningScreen(); - } -} - -class WebEngineHardeningGroupRoute extends GoRouteData { - final String group; - - const WebEngineHardeningGroupRoute({required this.group}); - - @override - Widget build(BuildContext context, GoRouterState state) { - return WebEngineHardeningGroupScreen(groupName: group); - } -} - -@TypedGoRoute( - name: 'ChatArchiveListRoute', - path: '/chat_archive', - routes: [ - TypedGoRoute( - name: 'ChatArchiveSearchRoute', - path: 'search', - ), - TypedGoRoute( - name: 'ChatArchiveDetailRoute', - path: 'detail/:fileName', - ), - ], -) -class ChatArchiveListRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const ChatArchiveListScreen(); - } -} - -class ChatArchiveSearchRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const ChatArchiveSearchScreen(); - } -} - -class ChatArchiveDetailRoute extends GoRouteData { - final String fileName; - - const ChatArchiveDetailRoute({required this.fileName}); - - @override - Widget build(BuildContext context, GoRouterState state) { - return ChatArchiveDetailScreen(fileName); - } -} - -@TypedGoRoute(name: 'TorProxyRoute', path: '/tor_proxy') -class TorProxyRoute extends GoRouteData { - @override - Widget build(BuildContext context, GoRouterState state) { - return const TorProxyScreen(); - } -} diff --git a/app/lib/core/routing/routes.g.dart b/app/lib/core/routing/routes.g.dart index f1837bd3..cb7c669c 100644 --- a/app/lib/core/routing/routes.g.dart +++ b/app/lib/core/routing/routes.g.dart @@ -7,38 +7,374 @@ part of 'routes.dart'; // ************************************************************************** List get $appRoutes => [ - $browserRoute, - $settingsRoute, - $chatArchiveListRoute, - $torProxyRoute, -]; + $aboutRoute, + $userAuthRoute, + $settingsRoute, + $browserRoute, + $bangCategoriesRoute, + ]; -RouteBase get $browserRoute => GoRouteData.$route( - path: '/', - name: 'BrowserRoute', - factory: $BrowserRouteExtension._fromState, - routes: [ - GoRouteData.$route( - path: 'page/:url', - name: 'WebPageRoute', - factory: $WebPageRouteExtension._fromState, - ), - GoRouteData.$route( +RouteBase get $aboutRoute => GoRouteData.$route( path: 'about', name: 'AboutRoute', factory: $AboutRouteExtension._fromState, - ), - GoRouteData.$route( + ); + +extension $AboutRouteExtension on AboutRoute { + static AboutRoute _fromState(GoRouterState state) => AboutRoute(); + + String get location => GoRouteData.$location( + 'about', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +RouteBase get $userAuthRoute => GoRouteData.$route( path: 'userAuth', name: 'UserAuthRoute', factory: $UserAuthRouteExtension._fromState, - ), - GoRouteData.$route( - path: 'search/:searchText', - name: 'SearchRoute', - factory: $SearchRouteExtension._fromState, - ), - GoRouteData.$route( + ); + +extension $UserAuthRouteExtension on UserAuthRoute { + static UserAuthRoute _fromState(GoRouterState state) => UserAuthRoute(); + + String get location => GoRouteData.$location( + 'userAuth', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +RouteBase get $settingsRoute => GoRouteData.$route( + path: '/settings', + name: 'SettingsRoute', + factory: $SettingsRouteExtension._fromState, + routes: [ + GoRouteData.$route( + path: 'general', + name: 'GeneralSettingsRoute', + factory: $GeneralSettingsRouteExtension._fromState, + ), + GoRouteData.$route( + path: 'bang', + name: 'BangSettingsRoute', + factory: $BangSettingsRouteExtension._fromState, + ), + GoRouteData.$route( + path: 'web_engine', + name: 'WebEngineSettingsRoute', + factory: $WebEngineSettingsRouteExtension._fromState, + routes: [ + GoRouteData.$route( + path: 'hardening', + name: 'WebEngineHardeningRoute', + factory: $WebEngineHardeningRouteExtension._fromState, + routes: [ + GoRouteData.$route( + path: 'group/:group', + name: 'WebEngineHardeningGroupRoute', + factory: $WebEngineHardeningGroupRouteExtension._fromState, + ), + ], + ), + ], + ), + ], + ); + +extension $SettingsRouteExtension on SettingsRoute { + static SettingsRoute _fromState(GoRouterState state) => SettingsRoute(); + + String get location => GoRouteData.$location( + '/settings', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $GeneralSettingsRouteExtension on GeneralSettingsRoute { + static GeneralSettingsRoute _fromState(GoRouterState state) => + GeneralSettingsRoute(); + + String get location => GoRouteData.$location( + '/settings/general', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $BangSettingsRouteExtension on BangSettingsRoute { + static BangSettingsRoute _fromState(GoRouterState state) => + BangSettingsRoute(); + + String get location => GoRouteData.$location( + '/settings/bang', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $WebEngineSettingsRouteExtension on WebEngineSettingsRoute { + static WebEngineSettingsRoute _fromState(GoRouterState state) => + WebEngineSettingsRoute(); + + String get location => GoRouteData.$location( + '/settings/web_engine', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $WebEngineHardeningRouteExtension on WebEngineHardeningRoute { + static WebEngineHardeningRoute _fromState(GoRouterState state) => + WebEngineHardeningRoute(); + + String get location => GoRouteData.$location( + '/settings/web_engine/hardening', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $WebEngineHardeningGroupRouteExtension + on WebEngineHardeningGroupRoute { + static WebEngineHardeningGroupRoute _fromState(GoRouterState state) => + WebEngineHardeningGroupRoute( + group: state.pathParameters['group']!, + ); + + String get location => GoRouteData.$location( + '/settings/web_engine/hardening/group/${Uri.encodeComponent(group)}', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +RouteBase get $browserRoute => GoRouteData.$route( + path: '/', + name: 'BrowserRoute', + factory: $BrowserRouteExtension._fromState, + routes: [ + GoRouteData.$route( + path: 'page/:url', + name: 'WebPageRoute', + factory: $WebPageRouteExtension._fromState, + ), + GoRouteData.$route( + path: 'search/:searchText', + name: 'SearchRoute', + factory: $SearchRouteExtension._fromState, + ), + GoRouteData.$route( + path: 'tor_proxy', + name: 'TorProxyRoute', + factory: $TorProxyRouteExtension._fromState, + ), + GoRouteData.$route( + path: 'containers', + name: 'ContainerListRoute', + factory: $ContainerListRouteExtension._fromState, + routes: [ + GoRouteData.$route( + path: 'create', + name: 'ContainerCreateRoute', + factory: $ContainerCreateRouteExtension._fromState, + ), + GoRouteData.$route( + path: 'edit', + name: 'ContainerEditRoute', + factory: $ContainerEditRouteExtension._fromState, + ), + ], + ), + ], + ); + +extension $BrowserRouteExtension on BrowserRoute { + static BrowserRoute _fromState(GoRouterState state) => BrowserRoute(); + + String get location => GoRouteData.$location( + '/', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $WebPageRouteExtension on WebPageRoute { + static WebPageRoute _fromState(GoRouterState state) => WebPageRoute( + url: state.pathParameters['url']!, + ); + + String get location => GoRouteData.$location( + '/page/${Uri.encodeComponent(url)}', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $SearchRouteExtension on SearchRoute { + static SearchRoute _fromState(GoRouterState state) => SearchRoute( + searchText: + state.pathParameters['searchText']! ?? SearchRoute.emptySearchText, + ); + + String get location => GoRouteData.$location( + '/search/${Uri.encodeComponent(searchText)}', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $TorProxyRouteExtension on TorProxyRoute { + static TorProxyRoute _fromState(GoRouterState state) => TorProxyRoute(); + + String get location => GoRouteData.$location( + '/tor_proxy', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $ContainerListRouteExtension on ContainerListRoute { + static ContainerListRoute _fromState(GoRouterState state) => + ContainerListRoute(); + + String get location => GoRouteData.$location( + '/containers', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $ContainerCreateRouteExtension on ContainerCreateRoute { + static ContainerCreateRoute _fromState(GoRouterState state) => + ContainerCreateRoute(); + + String get location => GoRouteData.$location( + '/containers/create', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +extension $ContainerEditRouteExtension on ContainerEditRoute { + static ContainerEditRoute _fromState(GoRouterState state) => + ContainerEditRoute(); + + String get location => GoRouteData.$location( + '/containers/edit', + ); + + void go(BuildContext context) => context.go(location); + + Future push(BuildContext context) => context.push(location); + + void pushReplacement(BuildContext context) => + context.pushReplacement(location); + + void replace(BuildContext context) => context.replace(location); +} + +RouteBase get $bangCategoriesRoute => GoRouteData.$route( path: 'bangs', name: 'BangRoute', factory: $BangCategoriesRouteExtension._fromState, @@ -61,113 +397,15 @@ RouteBase get $browserRoute => GoRouteData.$route( ], ), ], - ), - GoRouteData.$route( - path: 'containers', - name: 'ContainerListRoute', - factory: $ContainerListRouteExtension._fromState, - routes: [ - GoRouteData.$route( - path: 'create', - name: 'ContainerCreateRoute', - factory: $ContainerCreateRouteExtension._fromState, - ), - GoRouteData.$route( - path: 'edit', - name: 'ContainerEditRoute', - factory: $ContainerEditRouteExtension._fromState, - ), - ], - ), - ], -); - -extension $BrowserRouteExtension on BrowserRoute { - static BrowserRoute _fromState(GoRouterState state) => BrowserRoute(); - - String get location => GoRouteData.$location('/'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $WebPageRouteExtension on WebPageRoute { - static WebPageRoute _fromState(GoRouterState state) => - WebPageRoute(url: state.pathParameters['url']!); - - String get location => - GoRouteData.$location('/page/${Uri.encodeComponent(url)}'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $AboutRouteExtension on AboutRoute { - static AboutRoute _fromState(GoRouterState state) => AboutRoute(); - - String get location => GoRouteData.$location('/about'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $UserAuthRouteExtension on UserAuthRoute { - static UserAuthRoute _fromState(GoRouterState state) => UserAuthRoute(); - - String get location => GoRouteData.$location('/userAuth'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $SearchRouteExtension on SearchRoute { - static SearchRoute _fromState(GoRouterState state) => SearchRoute( - searchText: - state.pathParameters['searchText']! ?? SearchRoute.emptySearchText, - ); - - String get location => - GoRouteData.$location('/search/${Uri.encodeComponent(searchText)}'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} + ); extension $BangCategoriesRouteExtension on BangCategoriesRoute { static BangCategoriesRoute _fromState(GoRouterState state) => BangCategoriesRoute(); - String get location => GoRouteData.$location('/bangs'); + String get location => GoRouteData.$location( + 'bangs', + ); void go(BuildContext context) => context.go(location); @@ -181,12 +419,13 @@ extension $BangCategoriesRouteExtension on BangCategoriesRoute { extension $BangSearchRouteExtension on BangSearchRoute { static BangSearchRoute _fromState(GoRouterState state) => BangSearchRoute( - searchText: - state.pathParameters['searchText']! ?? BangSearchRoute.emptySearchText, - ); + searchText: state.pathParameters['searchText']! ?? + BangSearchRoute.emptySearchText, + ); - String get location => - GoRouteData.$location('/bangs/search/${Uri.encodeComponent(searchText)}'); + String get location => GoRouteData.$location( + 'bangs/search/${Uri.encodeComponent(searchText)}', + ); void go(BuildContext context) => context.go(location); @@ -199,11 +438,13 @@ extension $BangSearchRouteExtension on BangSearchRoute { } extension $BangCategoryRouteExtension on BangCategoryRoute { - static BangCategoryRoute _fromState(GoRouterState state) => - BangCategoryRoute(category: state.pathParameters['category']!); + static BangCategoryRoute _fromState(GoRouterState state) => BangCategoryRoute( + category: state.pathParameters['category']!, + ); - String get location => - GoRouteData.$location('/bangs/category/${Uri.encodeComponent(category)}'); + String get location => GoRouteData.$location( + 'bangs/category/${Uri.encodeComponent(category)}', + ); void go(BuildContext context) => context.go(location); @@ -223,281 +464,8 @@ extension $BangSubCategoryRouteExtension on BangSubCategoryRoute { ); String get location => GoRouteData.$location( - '/bangs/category/${Uri.encodeComponent(category)}/${Uri.encodeComponent(subCategory)}', - ); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $ContainerListRouteExtension on ContainerListRoute { - static ContainerListRoute _fromState(GoRouterState state) => - ContainerListRoute(); - - String get location => GoRouteData.$location('/containers'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $ContainerCreateRouteExtension on ContainerCreateRoute { - static ContainerCreateRoute _fromState(GoRouterState state) => - ContainerCreateRoute(); - - String get location => GoRouteData.$location('/containers/create'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $ContainerEditRouteExtension on ContainerEditRoute { - static ContainerEditRoute _fromState(GoRouterState state) => - ContainerEditRoute(); - - String get location => GoRouteData.$location('/containers/edit'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -RouteBase get $settingsRoute => GoRouteData.$route( - path: '/settings', - name: 'SettingsRoute', - factory: $SettingsRouteExtension._fromState, - routes: [ - GoRouteData.$route( - path: 'general', - name: 'GeneralSettingsRoute', - factory: $GeneralSettingsRouteExtension._fromState, - ), - GoRouteData.$route( - path: 'bang', - name: 'BangSettingsRoute', - factory: $BangSettingsRouteExtension._fromState, - ), - GoRouteData.$route( - path: 'web_engine', - name: 'WebEngineSettingsRoute', - factory: $WebEngineSettingsRouteExtension._fromState, - routes: [ - GoRouteData.$route( - path: 'hardening', - name: 'WebEngineHardeningRoute', - factory: $WebEngineHardeningRouteExtension._fromState, - routes: [ - GoRouteData.$route( - path: 'group/:group', - name: 'WebEngineHardeningGroupRoute', - factory: $WebEngineHardeningGroupRouteExtension._fromState, - ), - ], - ), - ], - ), - ], -); - -extension $SettingsRouteExtension on SettingsRoute { - static SettingsRoute _fromState(GoRouterState state) => SettingsRoute(); - - String get location => GoRouteData.$location('/settings'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $GeneralSettingsRouteExtension on GeneralSettingsRoute { - static GeneralSettingsRoute _fromState(GoRouterState state) => - GeneralSettingsRoute(); - - String get location => GoRouteData.$location('/settings/general'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $BangSettingsRouteExtension on BangSettingsRoute { - static BangSettingsRoute _fromState(GoRouterState state) => - BangSettingsRoute(); - - String get location => GoRouteData.$location('/settings/bang'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $WebEngineSettingsRouteExtension on WebEngineSettingsRoute { - static WebEngineSettingsRoute _fromState(GoRouterState state) => - WebEngineSettingsRoute(); - - String get location => GoRouteData.$location('/settings/web_engine'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $WebEngineHardeningRouteExtension on WebEngineHardeningRoute { - static WebEngineHardeningRoute _fromState(GoRouterState state) => - WebEngineHardeningRoute(); - - String get location => - GoRouteData.$location('/settings/web_engine/hardening'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $WebEngineHardeningGroupRouteExtension - on WebEngineHardeningGroupRoute { - static WebEngineHardeningGroupRoute _fromState(GoRouterState state) => - WebEngineHardeningGroupRoute(group: state.pathParameters['group']!); - - String get location => GoRouteData.$location( - '/settings/web_engine/hardening/group/${Uri.encodeComponent(group)}', - ); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -RouteBase get $chatArchiveListRoute => GoRouteData.$route( - path: '/chat_archive', - name: 'ChatArchiveListRoute', - factory: $ChatArchiveListRouteExtension._fromState, - routes: [ - GoRouteData.$route( - path: 'search', - name: 'ChatArchiveSearchRoute', - factory: $ChatArchiveSearchRouteExtension._fromState, - ), - GoRouteData.$route( - path: 'detail/:fileName', - name: 'ChatArchiveDetailRoute', - factory: $ChatArchiveDetailRouteExtension._fromState, - ), - ], -); - -extension $ChatArchiveListRouteExtension on ChatArchiveListRoute { - static ChatArchiveListRoute _fromState(GoRouterState state) => - ChatArchiveListRoute(); - - String get location => GoRouteData.$location('/chat_archive'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $ChatArchiveSearchRouteExtension on ChatArchiveSearchRoute { - static ChatArchiveSearchRoute _fromState(GoRouterState state) => - ChatArchiveSearchRoute(); - - String get location => GoRouteData.$location('/chat_archive/search'); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -extension $ChatArchiveDetailRouteExtension on ChatArchiveDetailRoute { - static ChatArchiveDetailRoute _fromState(GoRouterState state) => - ChatArchiveDetailRoute(fileName: state.pathParameters['fileName']!); - - String get location => GoRouteData.$location( - '/chat_archive/detail/${Uri.encodeComponent(fileName)}', - ); - - void go(BuildContext context) => context.go(location); - - Future push(BuildContext context) => context.push(location); - - void pushReplacement(BuildContext context) => - context.pushReplacement(location); - - void replace(BuildContext context) => context.replace(location); -} - -RouteBase get $torProxyRoute => GoRouteData.$route( - path: '/tor_proxy', - name: 'TorProxyRoute', - factory: $TorProxyRouteExtension._fromState, -); - -extension $TorProxyRouteExtension on TorProxyRoute { - static TorProxyRoute _fromState(GoRouterState state) => TorProxyRoute(); - - String get location => GoRouteData.$location('/tor_proxy'); + 'bangs/category/${Uri.encodeComponent(category)}/${Uri.encodeComponent(subCategory)}', + ); void go(BuildContext context) => context.go(location); diff --git a/app/lib/core/routing/routes.settings.dart b/app/lib/core/routing/routes.settings.dart new file mode 100644 index 00000000..f910db79 --- /dev/null +++ b/app/lib/core/routing/routes.settings.dart @@ -0,0 +1,74 @@ +part of 'routes.dart'; + +@TypedGoRoute( + name: 'SettingsRoute', + path: '/settings', + routes: [ + TypedGoRoute( + name: 'GeneralSettingsRoute', + path: 'general', + ), + TypedGoRoute(name: 'BangSettingsRoute', path: 'bang'), + TypedGoRoute( + name: 'WebEngineSettingsRoute', + path: 'web_engine', + routes: [ + TypedGoRoute( + name: 'WebEngineHardeningRoute', + path: 'hardening', + routes: [ + TypedGoRoute( + name: 'WebEngineHardeningGroupRoute', + path: 'group/:group', + ), + ], + ), + ], + ), + ], +) +class SettingsRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const SettingsScreen(); + } +} + +class GeneralSettingsRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const GeneralSettingsScreen(); + } +} + +class BangSettingsRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const BangSettingsScreen(); + } +} + +class WebEngineSettingsRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const WebEngineSettingsScreen(); + } +} + +class WebEngineHardeningRoute extends GoRouteData { + @override + Widget build(BuildContext context, GoRouterState state) { + return const WebEngineHardeningScreen(); + } +} + +class WebEngineHardeningGroupRoute extends GoRouteData { + final String group; + + const WebEngineHardeningGroupRoute({required this.group}); + + @override + Widget build(BuildContext context, GoRouterState state) { + return WebEngineHardeningGroupScreen(groupName: group); + } +}