diff --git a/app/lib/core/routing/routes.bookmarks.dart b/app/lib/core/routing/routes.bookmarks.dart
new file mode 100644
index 00000000..66191e02
--- /dev/null
+++ b/app/lib/core/routing/routes.bookmarks.dart
@@ -0,0 +1,108 @@
+/*
+ * Copyright (c) 2024-2025 Fabian Freund.
+ *
+ * This file is part of WebLibre
+ * (see https://weblibre.eu).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+part of 'routes.dart';
+
+@TypedGoRoute(
+ name: 'BookmarkListRoute',
+ path: '/bookmarks/:entryGuid',
+)
+class BookmarkListRoute extends GoRouteData with $BookmarkListRoute {
+ final String entryGuid;
+
+ const BookmarkListRoute({required this.entryGuid});
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return BookmarkListScreen(entryGuid: entryGuid);
+ }
+}
+
+@TypedGoRoute(
+ name: 'BookmarkFolderAddRoute',
+ path: '/bookmarks/createFolder',
+)
+class BookmarkFolderAddRoute extends GoRouteData with $BookmarkFolderAddRoute {
+ final String? parentGuid;
+
+ const BookmarkFolderAddRoute({required this.parentGuid});
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return BookmarkFolderEditScreen(parentGuid: parentGuid, folder: null);
+ }
+}
+
+@TypedGoRoute(
+ name: 'BookmarkFolderEditRoute',
+ path: '/bookmarks/editFolder',
+)
+class BookmarkFolderEditRoute extends GoRouteData
+ with $BookmarkFolderEditRoute {
+ final String folder;
+
+ const BookmarkFolderEditRoute({required this.folder});
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return BookmarkFolderEditScreen(
+ folder: BookmarkFolder.fromJson(
+ jsonDecode(folder) as Map,
+ ),
+ );
+ }
+}
+
+@TypedGoRoute(
+ name: 'BookmarkEntryAddRoute',
+ path: '/bookmarks/createEntry',
+)
+class BookmarkEntryAddRoute extends GoRouteData with $BookmarkEntryAddRoute {
+ final String bookmarkInfo;
+
+ const BookmarkEntryAddRoute({required this.bookmarkInfo});
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return BookmarkEntryEditScreen(
+ initialInfo: BookmarkInfo.decode(jsonDecode(bookmarkInfo) as Object),
+ exisitingEntry: null,
+ );
+ }
+}
+
+@TypedGoRoute(
+ name: 'BookmarkEntryEditRoute',
+ path: '/bookmarks/editEntry',
+)
+class BookmarkEntryEditRoute extends GoRouteData with $BookmarkEntryEditRoute {
+ final String bookmarkEntry;
+
+ const BookmarkEntryEditRoute({required this.bookmarkEntry});
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return BookmarkEntryEditScreen(
+ initialInfo: null,
+ exisitingEntry: BookmarkEntry.fromJson(
+ jsonDecode(bookmarkEntry) as Map,
+ ),
+ );
+ }
+}
diff --git a/app/lib/core/routing/routes.browser.dart b/app/lib/core/routing/routes.browser.dart
index a289dd69..3abe4bb0 100644
--- a/app/lib/core/routing/routes.browser.dart
+++ b/app/lib/core/routing/routes.browser.dart
@@ -27,8 +27,6 @@ part of 'routes.dart';
name: 'SearchRoute',
path: 'search/:tabType/:searchText',
),
- TypedGoRoute(name: 'TorProxyRoute', path: 'tor_proxy'),
- TypedGoRoute(name: 'HistoryRoute', path: 'history'),
TypedGoRoute(name: 'TabViewRoute', path: 'tab_view'),
TypedGoRoute(
name: 'ContextMenuRoute',
@@ -68,49 +66,6 @@ part of 'routes.dart';
name: 'SelectProfileRoute',
path: 'profile',
),
- TypedGoRoute(
- name: 'ProfileListRoute',
- path: 'profiles',
- routes: [
- TypedGoRoute(name: 'ProfileEditScreen', path: 'edit'),
- TypedGoRoute(
- name: 'ProfileBackupListRoute',
- path: 'backup_list',
- ),
- TypedGoRoute(
- name: 'RestoreProfileRoute',
- path: 'restore',
- ),
- TypedGoRoute(
- name: 'BackupProfileRoute',
- path: 'backup',
- ),
- TypedGoRoute(
- name: 'CreateProfileRoute',
- path: 'create',
- ),
- ],
- ),
- TypedGoRoute(
- name: 'BookmarkListRoute',
- path: 'bookmarks/:entryGuid',
- ),
- TypedGoRoute(
- name: 'BookmarkFolderAddRoute',
- path: 'createFolder',
- ),
- TypedGoRoute(
- name: 'BookmarkFolderEditRoute',
- path: 'editFolder',
- ),
- TypedGoRoute(
- name: 'BookmarkEntryAddRoute',
- path: 'createEntry',
- ),
- TypedGoRoute(
- name: 'BookmarkEntryEditRoute',
- path: 'editEntry',
- ),
],
)
class BrowserRoute extends GoRouteData with $BrowserRoute {
@@ -161,15 +116,6 @@ class SearchRoute extends GoRouteData with $SearchRoute {
}
}
-class TorProxyRoute extends GoRouteData with $TorProxyRoute {
- const TorProxyRoute();
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return const TorProxyScreen();
- }
-}
-
class ContainerDraftRoute extends GoRouteData with $ContainerDraftRoute {
const ContainerDraftRoute();
@@ -268,15 +214,6 @@ class OpenSharedContentRoute extends GoRouteData with $OpenSharedContentRoute {
}
}
-class HistoryRoute extends GoRouteData with $HistoryRoute {
- const HistoryRoute();
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return const HistoryScreen();
- }
-}
-
class TabViewRoute extends GoRouteData with $TabViewRoute {
const TabViewRoute();
@@ -294,129 +231,3 @@ class SelectProfileRoute extends GoRouteData with $SelectProfileRoute {
return BottomSheetPage(builder: (_) => const SelectProfileDialog());
}
}
-
-class ProfileListRoute extends GoRouteData with $ProfileListRoute {
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return const ProfileListScreen();
- }
-}
-
-class CreateProfileRoute extends GoRouteData with $CreateProfileRoute {
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return const ProfileEditScreen(profile: null);
- }
-}
-
-class EditProfileRoute extends GoRouteData with $EditProfileRoute {
- final String profile;
-
- const EditProfileRoute({required this.profile});
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return ProfileEditScreen(
- profile: Profile.fromJson(jsonDecode(profile) as Map),
- );
- }
-}
-
-class BackupProfileRoute extends GoRouteData with $BackupProfileRoute {
- final String profile;
-
- const BackupProfileRoute({required this.profile});
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return ProfileBackupScreen(
- profile: Profile.fromJson(jsonDecode(profile) as Map),
- );
- }
-}
-
-class RestoreProfileRoute extends GoRouteData with $RestoreProfileRoute {
- final String backupFilePath;
-
- const RestoreProfileRoute({required this.backupFilePath});
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return ProfileRestoreScreen(backupFile: File(backupFilePath));
- }
-}
-
-class ProfileBackupListRoute extends GoRouteData with $ProfileBackupListRoute {
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return const ProfileBackupListScreen();
- }
-}
-
-class BookmarkListRoute extends GoRouteData with $BookmarkListRoute {
- final String entryGuid;
-
- const BookmarkListRoute({required this.entryGuid});
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return BookmarkListScreen(entryGuid: entryGuid);
- }
-}
-
-class BookmarkFolderAddRoute extends GoRouteData with $BookmarkFolderAddRoute {
- final String? parentGuid;
-
- const BookmarkFolderAddRoute({required this.parentGuid});
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return BookmarkFolderEditScreen(parentGuid: parentGuid, folder: null);
- }
-}
-
-class BookmarkFolderEditRoute extends GoRouteData
- with $BookmarkFolderEditRoute {
- final String folder;
-
- const BookmarkFolderEditRoute({required this.folder});
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return BookmarkFolderEditScreen(
- folder: BookmarkFolder.fromJson(
- jsonDecode(folder) as Map,
- ),
- );
- }
-}
-
-class BookmarkEntryAddRoute extends GoRouteData with $BookmarkEntryAddRoute {
- final String bookmarkInfo;
-
- const BookmarkEntryAddRoute({required this.bookmarkInfo});
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return BookmarkEntryEditScreen(
- initialInfo: BookmarkInfo.decode(jsonDecode(bookmarkInfo) as Object),
- exisitingEntry: null,
- );
- }
-}
-
-class BookmarkEntryEditRoute extends GoRouteData with $BookmarkEntryEditRoute {
- final String bookmarkEntry;
-
- const BookmarkEntryEditRoute({required this.bookmarkEntry});
-
- @override
- Widget build(BuildContext context, GoRouterState state) {
- return BookmarkEntryEditScreen(
- initialInfo: null,
- exisitingEntry: BookmarkEntry.fromJson(
- jsonDecode(bookmarkEntry) as Map,
- ),
- );
- }
-}
diff --git a/app/lib/core/routing/routes.dart b/app/lib/core/routing/routes.dart
index 359f9845..7b613c81 100644
--- a/app/lib/core/routing/routes.dart
+++ b/app/lib/core/routing/routes.dart
@@ -85,10 +85,14 @@ import 'package:weblibre/features/web_feed/presentation/screens/feed_list.dart';
import 'package:weblibre/features/web_feed/presentation/select_feed_dialog.dart';
part 'routes.bangs.dart';
+part 'routes.bookmarks.dart';
part 'routes.browser.dart';
part 'routes.feeds.dart';
part 'routes.g.dart';
+part 'routes.history.dart';
+part 'routes.profiles.dart';
part 'routes.settings.dart';
+part 'routes.tor.dart';
@TypedGoRoute(name: 'AboutRoute', path: '/about')
class AboutRoute extends GoRouteData with $AboutRoute {
diff --git a/app/lib/core/routing/routes.g.dart b/app/lib/core/routing/routes.g.dart
index c4473637..014ed1e2 100644
--- a/app/lib/core/routing/routes.g.dart
+++ b/app/lib/core/routing/routes.g.dart
@@ -10,9 +10,17 @@ List get $appRoutes => [
$aboutRoute,
$onboardingRoute,
$bangMenuRoute,
+ $bookmarkListRoute,
+ $bookmarkFolderAddRoute,
+ $bookmarkFolderEditRoute,
+ $bookmarkEntryAddRoute,
+ $bookmarkEntryEditRoute,
$browserRoute,
$feedListRoute,
+ $historyRoute,
+ $profileListRoute,
$settingsRoute,
+ $torProxyRoute,
];
RouteBase get $aboutRoute => GoRouteData.$route(
@@ -313,6 +321,173 @@ mixin $BangSubCategoryRoute on GoRouteData {
void replace(BuildContext context) => context.replace(location);
}
+RouteBase get $bookmarkListRoute => GoRouteData.$route(
+ path: '/bookmarks/:entryGuid',
+ name: 'BookmarkListRoute',
+ factory: $BookmarkListRoute._fromState,
+);
+
+mixin $BookmarkListRoute on GoRouteData {
+ static BookmarkListRoute _fromState(GoRouterState state) =>
+ BookmarkListRoute(entryGuid: state.pathParameters['entryGuid']!);
+
+ BookmarkListRoute get _self => this as BookmarkListRoute;
+
+ @override
+ String get location => GoRouteData.$location(
+ '/bookmarks/${Uri.encodeComponent(_self.entryGuid)}',
+ );
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+RouteBase get $bookmarkFolderAddRoute => GoRouteData.$route(
+ path: '/bookmarks/createFolder',
+ name: 'BookmarkFolderAddRoute',
+ factory: $BookmarkFolderAddRoute._fromState,
+);
+
+mixin $BookmarkFolderAddRoute on GoRouteData {
+ static BookmarkFolderAddRoute _fromState(GoRouterState state) =>
+ BookmarkFolderAddRoute(
+ parentGuid: state.uri.queryParameters['parent-guid'],
+ );
+
+ BookmarkFolderAddRoute get _self => this as BookmarkFolderAddRoute;
+
+ @override
+ String get location => GoRouteData.$location(
+ '/bookmarks/createFolder',
+ queryParams: {
+ if (_self.parentGuid != null) 'parent-guid': _self.parentGuid,
+ },
+ );
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+RouteBase get $bookmarkFolderEditRoute => GoRouteData.$route(
+ path: '/bookmarks/editFolder',
+ name: 'BookmarkFolderEditRoute',
+ factory: $BookmarkFolderEditRoute._fromState,
+);
+
+mixin $BookmarkFolderEditRoute on GoRouteData {
+ static BookmarkFolderEditRoute _fromState(GoRouterState state) =>
+ BookmarkFolderEditRoute(folder: state.uri.queryParameters['folder']!);
+
+ BookmarkFolderEditRoute get _self => this as BookmarkFolderEditRoute;
+
+ @override
+ String get location => GoRouteData.$location(
+ '/bookmarks/editFolder',
+ queryParams: {'folder': _self.folder},
+ );
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+RouteBase get $bookmarkEntryAddRoute => GoRouteData.$route(
+ path: '/bookmarks/createEntry',
+ name: 'BookmarkEntryAddRoute',
+ factory: $BookmarkEntryAddRoute._fromState,
+);
+
+mixin $BookmarkEntryAddRoute on GoRouteData {
+ static BookmarkEntryAddRoute _fromState(GoRouterState state) =>
+ BookmarkEntryAddRoute(
+ bookmarkInfo: state.uri.queryParameters['bookmark-info']!,
+ );
+
+ BookmarkEntryAddRoute get _self => this as BookmarkEntryAddRoute;
+
+ @override
+ String get location => GoRouteData.$location(
+ '/bookmarks/createEntry',
+ queryParams: {'bookmark-info': _self.bookmarkInfo},
+ );
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+RouteBase get $bookmarkEntryEditRoute => GoRouteData.$route(
+ path: '/bookmarks/editEntry',
+ name: 'BookmarkEntryEditRoute',
+ factory: $BookmarkEntryEditRoute._fromState,
+);
+
+mixin $BookmarkEntryEditRoute on GoRouteData {
+ static BookmarkEntryEditRoute _fromState(GoRouterState state) =>
+ BookmarkEntryEditRoute(
+ bookmarkEntry: state.uri.queryParameters['bookmark-entry']!,
+ );
+
+ BookmarkEntryEditRoute get _self => this as BookmarkEntryEditRoute;
+
+ @override
+ String get location => GoRouteData.$location(
+ '/bookmarks/editEntry',
+ queryParams: {'bookmark-entry': _self.bookmarkEntry},
+ );
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
RouteBase get $browserRoute => GoRouteData.$route(
path: '/browser',
name: 'BrowserRoute',
@@ -323,16 +498,6 @@ RouteBase get $browserRoute => GoRouteData.$route(
name: 'SearchRoute',
factory: $SearchRoute._fromState,
),
- GoRouteData.$route(
- path: 'tor_proxy',
- name: 'TorProxyRoute',
- factory: $TorProxyRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'history',
- name: 'HistoryRoute',
- factory: $HistoryRoute._fromState,
- ),
GoRouteData.$route(
path: 'tab_view',
name: 'TabViewRoute',
@@ -385,63 +550,6 @@ RouteBase get $browserRoute => GoRouteData.$route(
name: 'SelectProfileRoute',
factory: $SelectProfileRoute._fromState,
),
- GoRouteData.$route(
- path: 'profiles',
- name: 'ProfileListRoute',
- factory: $ProfileListRoute._fromState,
- routes: [
- GoRouteData.$route(
- path: 'edit',
- name: 'ProfileEditScreen',
- factory: $EditProfileRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'backup_list',
- name: 'ProfileBackupListRoute',
- factory: $ProfileBackupListRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'restore',
- name: 'RestoreProfileRoute',
- factory: $RestoreProfileRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'backup',
- name: 'BackupProfileRoute',
- factory: $BackupProfileRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'create',
- name: 'CreateProfileRoute',
- factory: $CreateProfileRoute._fromState,
- ),
- ],
- ),
- GoRouteData.$route(
- path: 'bookmarks/:entryGuid',
- name: 'BookmarkListRoute',
- factory: $BookmarkListRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'createFolder',
- name: 'BookmarkFolderAddRoute',
- factory: $BookmarkFolderAddRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'editFolder',
- name: 'BookmarkFolderEditRoute',
- factory: $BookmarkFolderEditRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'createEntry',
- name: 'BookmarkEntryAddRoute',
- factory: $BookmarkEntryAddRoute._fromState,
- ),
- GoRouteData.$route(
- path: 'editEntry',
- name: 'BookmarkEntryEditRoute',
- factory: $BookmarkEntryEditRoute._fromState,
- ),
],
);
@@ -512,46 +620,6 @@ const _$TabTypeEnumMap = {
TabType.child: 'child',
};
-mixin $TorProxyRoute on GoRouteData {
- static TorProxyRoute _fromState(GoRouterState state) => const TorProxyRoute();
-
- @override
- String get location => GoRouteData.$location('/browser/tor_proxy');
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $HistoryRoute on GoRouteData {
- static HistoryRoute _fromState(GoRouterState state) => const HistoryRoute();
-
- @override
- String get location => GoRouteData.$location('/browser/history');
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
mixin $TabViewRoute on GoRouteData {
static TabViewRoute _fromState(GoRouterState state) => const TabViewRoute();
@@ -789,285 +857,6 @@ mixin $SelectProfileRoute on GoRouteData {
void replace(BuildContext context) => context.replace(location);
}
-mixin $ProfileListRoute on GoRouteData {
- static ProfileListRoute _fromState(GoRouterState state) => ProfileListRoute();
-
- @override
- String get location => GoRouteData.$location('/browser/profiles');
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $EditProfileRoute on GoRouteData {
- static EditProfileRoute _fromState(GoRouterState state) =>
- EditProfileRoute(profile: state.uri.queryParameters['profile']!);
-
- EditProfileRoute get _self => this as EditProfileRoute;
-
- @override
- String get location => GoRouteData.$location(
- '/browser/profiles/edit',
- queryParams: {'profile': _self.profile},
- );
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $ProfileBackupListRoute on GoRouteData {
- static ProfileBackupListRoute _fromState(GoRouterState state) =>
- ProfileBackupListRoute();
-
- @override
- String get location => GoRouteData.$location('/browser/profiles/backup_list');
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $RestoreProfileRoute on GoRouteData {
- static RestoreProfileRoute _fromState(GoRouterState state) =>
- RestoreProfileRoute(
- backupFilePath: state.uri.queryParameters['backup-file-path']!,
- );
-
- RestoreProfileRoute get _self => this as RestoreProfileRoute;
-
- @override
- String get location => GoRouteData.$location(
- '/browser/profiles/restore',
- queryParams: {'backup-file-path': _self.backupFilePath},
- );
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $BackupProfileRoute on GoRouteData {
- static BackupProfileRoute _fromState(GoRouterState state) =>
- BackupProfileRoute(profile: state.uri.queryParameters['profile']!);
-
- BackupProfileRoute get _self => this as BackupProfileRoute;
-
- @override
- String get location => GoRouteData.$location(
- '/browser/profiles/backup',
- queryParams: {'profile': _self.profile},
- );
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $CreateProfileRoute on GoRouteData {
- static CreateProfileRoute _fromState(GoRouterState state) =>
- CreateProfileRoute();
-
- @override
- String get location => GoRouteData.$location('/browser/profiles/create');
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $BookmarkListRoute on GoRouteData {
- static BookmarkListRoute _fromState(GoRouterState state) =>
- BookmarkListRoute(entryGuid: state.pathParameters['entryGuid']!);
-
- BookmarkListRoute get _self => this as BookmarkListRoute;
-
- @override
- String get location => GoRouteData.$location(
- '/browser/bookmarks/${Uri.encodeComponent(_self.entryGuid)}',
- );
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $BookmarkFolderAddRoute on GoRouteData {
- static BookmarkFolderAddRoute _fromState(GoRouterState state) =>
- BookmarkFolderAddRoute(
- parentGuid: state.uri.queryParameters['parent-guid'],
- );
-
- BookmarkFolderAddRoute get _self => this as BookmarkFolderAddRoute;
-
- @override
- String get location => GoRouteData.$location(
- '/browser/createFolder',
- queryParams: {
- if (_self.parentGuid != null) 'parent-guid': _self.parentGuid,
- },
- );
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $BookmarkFolderEditRoute on GoRouteData {
- static BookmarkFolderEditRoute _fromState(GoRouterState state) =>
- BookmarkFolderEditRoute(folder: state.uri.queryParameters['folder']!);
-
- BookmarkFolderEditRoute get _self => this as BookmarkFolderEditRoute;
-
- @override
- String get location => GoRouteData.$location(
- '/browser/editFolder',
- queryParams: {'folder': _self.folder},
- );
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $BookmarkEntryAddRoute on GoRouteData {
- static BookmarkEntryAddRoute _fromState(GoRouterState state) =>
- BookmarkEntryAddRoute(
- bookmarkInfo: state.uri.queryParameters['bookmark-info']!,
- );
-
- BookmarkEntryAddRoute get _self => this as BookmarkEntryAddRoute;
-
- @override
- String get location => GoRouteData.$location(
- '/browser/createEntry',
- queryParams: {'bookmark-info': _self.bookmarkInfo},
- );
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
-mixin $BookmarkEntryEditRoute on GoRouteData {
- static BookmarkEntryEditRoute _fromState(GoRouterState state) =>
- BookmarkEntryEditRoute(
- bookmarkEntry: state.uri.queryParameters['bookmark-entry']!,
- );
-
- BookmarkEntryEditRoute get _self => this as BookmarkEntryEditRoute;
-
- @override
- String get location => GoRouteData.$location(
- '/browser/editEntry',
- queryParams: {'bookmark-entry': _self.bookmarkEntry},
- );
-
- @override
- void go(BuildContext context) => context.go(location);
-
- @override
- Future push(BuildContext context) => context.push(location);
-
- @override
- void pushReplacement(BuildContext context) =>
- context.pushReplacement(location);
-
- @override
- void replace(BuildContext context) => context.replace(location);
-}
-
T? _$convertMapValue(
String key,
Map map,
@@ -1302,6 +1091,207 @@ mixin $FeedEditRoute on GoRouteData {
void replace(BuildContext context) => context.replace(location);
}
+RouteBase get $historyRoute => GoRouteData.$route(
+ path: '/history',
+ name: 'HistoryRoute',
+ factory: $HistoryRoute._fromState,
+);
+
+mixin $HistoryRoute on GoRouteData {
+ static HistoryRoute _fromState(GoRouterState state) => const HistoryRoute();
+
+ @override
+ String get location => GoRouteData.$location('/history');
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+RouteBase get $profileListRoute => GoRouteData.$route(
+ path: '/profiles',
+ name: 'ProfileListRoute',
+ factory: $ProfileListRoute._fromState,
+ routes: [
+ GoRouteData.$route(
+ path: 'edit',
+ name: 'ProfileEditRoute',
+ factory: $EditProfileRoute._fromState,
+ ),
+ GoRouteData.$route(
+ path: 'backup_list',
+ name: 'ProfileBackupListRoute',
+ factory: $ProfileBackupListRoute._fromState,
+ ),
+ GoRouteData.$route(
+ path: 'restore',
+ name: 'RestoreProfileRoute',
+ factory: $RestoreProfileRoute._fromState,
+ ),
+ GoRouteData.$route(
+ path: 'backup',
+ name: 'BackupProfileRoute',
+ factory: $BackupProfileRoute._fromState,
+ ),
+ GoRouteData.$route(
+ path: 'create',
+ name: 'CreateProfileRoute',
+ factory: $CreateProfileRoute._fromState,
+ ),
+ ],
+);
+
+mixin $ProfileListRoute on GoRouteData {
+ static ProfileListRoute _fromState(GoRouterState state) => ProfileListRoute();
+
+ @override
+ String get location => GoRouteData.$location('/profiles');
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+mixin $EditProfileRoute on GoRouteData {
+ static EditProfileRoute _fromState(GoRouterState state) =>
+ EditProfileRoute(profile: state.uri.queryParameters['profile']!);
+
+ EditProfileRoute get _self => this as EditProfileRoute;
+
+ @override
+ String get location => GoRouteData.$location(
+ '/profiles/edit',
+ queryParams: {'profile': _self.profile},
+ );
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+mixin $ProfileBackupListRoute on GoRouteData {
+ static ProfileBackupListRoute _fromState(GoRouterState state) =>
+ ProfileBackupListRoute();
+
+ @override
+ String get location => GoRouteData.$location('/profiles/backup_list');
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+mixin $RestoreProfileRoute on GoRouteData {
+ static RestoreProfileRoute _fromState(GoRouterState state) =>
+ RestoreProfileRoute(
+ backupFilePath: state.uri.queryParameters['backup-file-path']!,
+ );
+
+ RestoreProfileRoute get _self => this as RestoreProfileRoute;
+
+ @override
+ String get location => GoRouteData.$location(
+ '/profiles/restore',
+ queryParams: {'backup-file-path': _self.backupFilePath},
+ );
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+mixin $BackupProfileRoute on GoRouteData {
+ static BackupProfileRoute _fromState(GoRouterState state) =>
+ BackupProfileRoute(profile: state.uri.queryParameters['profile']!);
+
+ BackupProfileRoute get _self => this as BackupProfileRoute;
+
+ @override
+ String get location => GoRouteData.$location(
+ '/profiles/backup',
+ queryParams: {'profile': _self.profile},
+ );
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
+mixin $CreateProfileRoute on GoRouteData {
+ static CreateProfileRoute _fromState(GoRouterState state) =>
+ CreateProfileRoute();
+
+ @override
+ String get location => GoRouteData.$location('/profiles/create');
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
+
RouteBase get $settingsRoute => GoRouteData.$route(
path: '/settings',
name: 'SettingsRoute',
@@ -1752,3 +1742,29 @@ mixin $ErrorLogsRoute on GoRouteData {
@override
void replace(BuildContext context) => context.replace(location);
}
+
+RouteBase get $torProxyRoute => GoRouteData.$route(
+ path: '/tor',
+ name: 'TorProxyRoute',
+ factory: $TorProxyRoute._fromState,
+);
+
+mixin $TorProxyRoute on GoRouteData {
+ static TorProxyRoute _fromState(GoRouterState state) => const TorProxyRoute();
+
+ @override
+ String get location => GoRouteData.$location('/tor');
+
+ @override
+ void go(BuildContext context) => context.go(location);
+
+ @override
+ Future push(BuildContext context) => context.push(location);
+
+ @override
+ void pushReplacement(BuildContext context) =>
+ context.pushReplacement(location);
+
+ @override
+ void replace(BuildContext context) => context.replace(location);
+}
diff --git a/app/lib/core/routing/routes.history.dart b/app/lib/core/routing/routes.history.dart
new file mode 100644
index 00000000..880dca31
--- /dev/null
+++ b/app/lib/core/routing/routes.history.dart
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2024-2025 Fabian Freund.
+ *
+ * This file is part of WebLibre
+ * (see https://weblibre.eu).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+part of 'routes.dart';
+
+@TypedGoRoute(name: 'HistoryRoute', path: '/history')
+class HistoryRoute extends GoRouteData with $HistoryRoute {
+ const HistoryRoute();
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return const HistoryScreen();
+ }
+}
diff --git a/app/lib/core/routing/routes.profiles.dart b/app/lib/core/routing/routes.profiles.dart
new file mode 100644
index 00000000..cd17ced7
--- /dev/null
+++ b/app/lib/core/routing/routes.profiles.dart
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2024-2025 Fabian Freund.
+ *
+ * This file is part of WebLibre
+ * (see https://weblibre.eu).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+part of 'routes.dart';
+
+@TypedGoRoute(
+ name: 'ProfileListRoute',
+ path: '/profiles',
+ routes: [
+ TypedGoRoute(name: 'ProfileEditRoute', path: 'edit'),
+ TypedGoRoute(
+ name: 'ProfileBackupListRoute',
+ path: 'backup_list',
+ ),
+ TypedGoRoute(
+ name: 'RestoreProfileRoute',
+ path: 'restore',
+ ),
+ TypedGoRoute(
+ name: 'BackupProfileRoute',
+ path: 'backup',
+ ),
+ TypedGoRoute(
+ name: 'CreateProfileRoute',
+ path: 'create',
+ ),
+ ],
+)
+class ProfileListRoute extends GoRouteData with $ProfileListRoute {
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return const ProfileListScreen();
+ }
+}
+
+class CreateProfileRoute extends GoRouteData with $CreateProfileRoute {
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return const ProfileEditScreen(profile: null);
+ }
+}
+
+class EditProfileRoute extends GoRouteData with $EditProfileRoute {
+ final String profile;
+
+ const EditProfileRoute({required this.profile});
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return ProfileEditScreen(
+ profile: Profile.fromJson(jsonDecode(profile) as Map),
+ );
+ }
+}
+
+class BackupProfileRoute extends GoRouteData with $BackupProfileRoute {
+ final String profile;
+
+ const BackupProfileRoute({required this.profile});
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return ProfileBackupScreen(
+ profile: Profile.fromJson(jsonDecode(profile) as Map),
+ );
+ }
+}
+
+class RestoreProfileRoute extends GoRouteData with $RestoreProfileRoute {
+ final String backupFilePath;
+
+ const RestoreProfileRoute({required this.backupFilePath});
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return ProfileRestoreScreen(backupFile: File(backupFilePath));
+ }
+}
+
+class ProfileBackupListRoute extends GoRouteData with $ProfileBackupListRoute {
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return const ProfileBackupListScreen();
+ }
+}
diff --git a/app/lib/core/routing/routes.tor.dart b/app/lib/core/routing/routes.tor.dart
new file mode 100644
index 00000000..5b71cb26
--- /dev/null
+++ b/app/lib/core/routing/routes.tor.dart
@@ -0,0 +1,30 @@
+/*
+ * Copyright (c) 2024-2025 Fabian Freund.
+ *
+ * This file is part of WebLibre
+ * (see https://weblibre.eu).
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see .
+ */
+part of 'routes.dart';
+
+@TypedGoRoute(name: 'TorProxyRoute', path: '/tor')
+class TorProxyRoute extends GoRouteData with $TorProxyRoute {
+ const TorProxyRoute();
+
+ @override
+ Widget build(BuildContext context, GoRouterState state) {
+ return const TorProxyScreen();
+ }
+}