major update
This commit is contained in:
@@ -36,17 +36,14 @@ class BrowserRoute extends GoRouteData {
|
||||
|
||||
class WebPageRoute extends GoRouteData {
|
||||
final String url;
|
||||
final WebPageInfo? $extra;
|
||||
|
||||
const WebPageRoute({required this.url});
|
||||
const WebPageRoute({required this.url, required this.$extra});
|
||||
|
||||
@override
|
||||
Page<void> buildPage(BuildContext context, GoRouterState state) {
|
||||
return DialogPage(
|
||||
builder:
|
||||
(_) => WebPageDialog(
|
||||
url: Uri.parse(url),
|
||||
precachedInfo: state.extra as WebPageInfo?,
|
||||
),
|
||||
builder: (_) => WebPageDialog(url: Uri.parse(url), precachedInfo: $extra),
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -85,33 +82,37 @@ class ContainerListRoute extends GoRouteData {
|
||||
}
|
||||
|
||||
class ContainerEditRoute extends GoRouteData {
|
||||
final ContainerData $extra;
|
||||
|
||||
ContainerEditRoute(this.$extra);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, GoRouterState state) {
|
||||
return ContainerEditScreen.edit(
|
||||
initialContainer: state.extra! as ContainerData,
|
||||
);
|
||||
return ContainerEditScreen.edit(initialContainer: $extra);
|
||||
}
|
||||
}
|
||||
|
||||
class ContainerCreateRoute extends GoRouteData {
|
||||
final ContainerData $extra;
|
||||
|
||||
ContainerCreateRoute(this.$extra);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, GoRouterState state) {
|
||||
return ContainerEditScreen.create(
|
||||
initialContainer: state.extra! as ContainerData,
|
||||
);
|
||||
return ContainerEditScreen.create(initialContainer: $extra);
|
||||
}
|
||||
}
|
||||
|
||||
class ContextMenuRoute extends GoRouteData {
|
||||
const ContextMenuRoute();
|
||||
final String $extra;
|
||||
|
||||
const ContextMenuRoute(this.$extra);
|
||||
|
||||
@override
|
||||
Page<void> buildPage(BuildContext context, GoRouterState state) {
|
||||
return DialogPage(
|
||||
builder:
|
||||
(_) => ContextMenuDialog(
|
||||
hitResult: HitResultJson.fromJson(state.extra! as String),
|
||||
),
|
||||
(_) => ContextMenuDialog(hitResult: HitResultJson.fromJson($extra)),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:lensai/core/routing/widgets/dialog_page.dart';
|
||||
@@ -22,11 +24,12 @@ import 'package:lensai/features/settings/presentation/screens/web_engine_hardeni
|
||||
import 'package:lensai/features/settings/presentation/screens/web_engine_settings.dart';
|
||||
import 'package:lensai/features/tor/presentation/screens/tor_proxy.dart';
|
||||
import 'package:lensai/features/user/presentation/screens/auth.dart';
|
||||
import 'package:lensai/features/web_feed/data/database/database.dart';
|
||||
import 'package:lensai/features/web_feed/presentation/add_feed_dialog.dart';
|
||||
import 'package:lensai/features/web_feed/presentation/screens/feed_article.dart';
|
||||
import 'package:lensai/features/web_feed/presentation/screens/feed_article_list.dart';
|
||||
import 'package:lensai/features/web_feed/presentation/screens/feed_edit.dart';
|
||||
import 'package:lensai/features/web_feed/presentation/screens/feed_list.dart';
|
||||
import 'package:lensai/features/web_feed/presentation/select_feed_dialog.dart';
|
||||
|
||||
part 'routes.g.dart';
|
||||
part 'routes.settings.dart';
|
||||
|
||||
@@ -4,6 +4,7 @@ part of 'routes.dart';
|
||||
name: 'FeedListRoute',
|
||||
path: '/feeds',
|
||||
routes: [
|
||||
TypedGoRoute<FeedAddRoute>(name: 'FeedAddRoute', path: 'add'),
|
||||
TypedGoRoute<FeedArticleListRoute>(
|
||||
name: 'FeedArticleListRoute',
|
||||
path: 'articles/:feedId',
|
||||
@@ -12,7 +13,15 @@ part of 'routes.dart';
|
||||
name: 'FeedArticleRoute',
|
||||
path: 'article/:articleId',
|
||||
),
|
||||
TypedGoRoute<FeedCreateRoute>(name: 'FeedCreateRoute', path: 'create'),
|
||||
TypedGoRoute<FeedCreateRoute>(
|
||||
name: 'FeedCreateRoute',
|
||||
path: 'create/:feedId',
|
||||
),
|
||||
TypedGoRoute<SelectFeedDialogRoute>(
|
||||
name: 'SelectFeedDialogRoute',
|
||||
path: 'available/:feedsJson',
|
||||
),
|
||||
TypedGoRoute<FeedEditRoute>(name: 'FeedEditRoute', path: 'edit/:feedId'),
|
||||
],
|
||||
)
|
||||
class FeedListRoute extends GoRouteData {
|
||||
@@ -23,9 +32,52 @@ class FeedListRoute extends GoRouteData {
|
||||
}
|
||||
|
||||
class FeedCreateRoute extends GoRouteData {
|
||||
final Uri feedId;
|
||||
|
||||
FeedCreateRoute({required this.feedId});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, GoRouterState state) {
|
||||
return FeedEditScreen.create(initialFeed: state.extra! as FeedData);
|
||||
return FeedEditScreen.create(feedId: feedId);
|
||||
}
|
||||
}
|
||||
|
||||
class SelectFeedDialogRoute extends GoRouteData {
|
||||
final String feedsJson;
|
||||
|
||||
const SelectFeedDialogRoute({required this.feedsJson});
|
||||
|
||||
@override
|
||||
Page<void> buildPage(BuildContext context, GoRouterState state) {
|
||||
final feedUris = Set<Uri>.from(
|
||||
(jsonDecode(feedsJson) as List<dynamic>).map(
|
||||
(url) => Uri.parse(url as String),
|
||||
),
|
||||
);
|
||||
|
||||
return DialogPage(builder: (_) => SelectFeedDialog(feedUris: feedUris));
|
||||
}
|
||||
}
|
||||
|
||||
class FeedEditRoute extends GoRouteData {
|
||||
final Uri feedId;
|
||||
|
||||
const FeedEditRoute({required this.feedId});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context, GoRouterState state) {
|
||||
return FeedEditScreen.edit(feedId: feedId);
|
||||
}
|
||||
}
|
||||
|
||||
class FeedAddRoute extends GoRouteData {
|
||||
final Uri? $extra;
|
||||
|
||||
const FeedAddRoute({this.$extra});
|
||||
|
||||
@override
|
||||
Page<void> buildPage(BuildContext context, GoRouterState state) {
|
||||
return DialogPage(builder: (_) => AddFeedDialog(initialUri: $extra));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -270,20 +270,24 @@ extension $BrowserRouteExtension on BrowserRoute {
|
||||
}
|
||||
|
||||
extension $WebPageRouteExtension on WebPageRoute {
|
||||
static WebPageRoute _fromState(GoRouterState state) =>
|
||||
WebPageRoute(url: state.pathParameters['url']!);
|
||||
static WebPageRoute _fromState(GoRouterState state) => WebPageRoute(
|
||||
url: state.pathParameters['url']!,
|
||||
$extra: state.extra as WebPageInfo?,
|
||||
);
|
||||
|
||||
String get location =>
|
||||
GoRouteData.$location('/page/${Uri.encodeComponent(url)}');
|
||||
|
||||
void go(BuildContext context) => context.go(location);
|
||||
void go(BuildContext context) => context.go(location, extra: $extra);
|
||||
|
||||
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
|
||||
Future<T?> push<T>(BuildContext context) =>
|
||||
context.push<T>(location, extra: $extra);
|
||||
|
||||
void pushReplacement(BuildContext context) =>
|
||||
context.pushReplacement(location);
|
||||
context.pushReplacement(location, extra: $extra);
|
||||
|
||||
void replace(BuildContext context) => context.replace(location);
|
||||
void replace(BuildContext context) =>
|
||||
context.replace(location, extra: $extra);
|
||||
}
|
||||
|
||||
extension $SearchRouteExtension on SearchRoute {
|
||||
@@ -322,18 +326,20 @@ extension $TorProxyRouteExtension on TorProxyRoute {
|
||||
|
||||
extension $ContextMenuRouteExtension on ContextMenuRoute {
|
||||
static ContextMenuRoute _fromState(GoRouterState state) =>
|
||||
const ContextMenuRoute();
|
||||
ContextMenuRoute(state.extra as String);
|
||||
|
||||
String get location => GoRouteData.$location('/context_menu');
|
||||
|
||||
void go(BuildContext context) => context.go(location);
|
||||
void go(BuildContext context) => context.go(location, extra: $extra);
|
||||
|
||||
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
|
||||
Future<T?> push<T>(BuildContext context) =>
|
||||
context.push<T>(location, extra: $extra);
|
||||
|
||||
void pushReplacement(BuildContext context) =>
|
||||
context.pushReplacement(location);
|
||||
context.pushReplacement(location, extra: $extra);
|
||||
|
||||
void replace(BuildContext context) => context.replace(location);
|
||||
void replace(BuildContext context) =>
|
||||
context.replace(location, extra: $extra);
|
||||
}
|
||||
|
||||
extension $ContainerListRouteExtension on ContainerListRoute {
|
||||
@@ -354,34 +360,38 @@ extension $ContainerListRouteExtension on ContainerListRoute {
|
||||
|
||||
extension $ContainerCreateRouteExtension on ContainerCreateRoute {
|
||||
static ContainerCreateRoute _fromState(GoRouterState state) =>
|
||||
ContainerCreateRoute();
|
||||
ContainerCreateRoute(state.extra as ContainerData);
|
||||
|
||||
String get location => GoRouteData.$location('/containers/create');
|
||||
|
||||
void go(BuildContext context) => context.go(location);
|
||||
void go(BuildContext context) => context.go(location, extra: $extra);
|
||||
|
||||
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
|
||||
Future<T?> push<T>(BuildContext context) =>
|
||||
context.push<T>(location, extra: $extra);
|
||||
|
||||
void pushReplacement(BuildContext context) =>
|
||||
context.pushReplacement(location);
|
||||
context.pushReplacement(location, extra: $extra);
|
||||
|
||||
void replace(BuildContext context) => context.replace(location);
|
||||
void replace(BuildContext context) =>
|
||||
context.replace(location, extra: $extra);
|
||||
}
|
||||
|
||||
extension $ContainerEditRouteExtension on ContainerEditRoute {
|
||||
static ContainerEditRoute _fromState(GoRouterState state) =>
|
||||
ContainerEditRoute();
|
||||
ContainerEditRoute(state.extra as ContainerData);
|
||||
|
||||
String get location => GoRouteData.$location('/containers/edit');
|
||||
|
||||
void go(BuildContext context) => context.go(location);
|
||||
void go(BuildContext context) => context.go(location, extra: $extra);
|
||||
|
||||
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
|
||||
Future<T?> push<T>(BuildContext context) =>
|
||||
context.push<T>(location, extra: $extra);
|
||||
|
||||
void pushReplacement(BuildContext context) =>
|
||||
context.pushReplacement(location);
|
||||
context.pushReplacement(location, extra: $extra);
|
||||
|
||||
void replace(BuildContext context) => context.replace(location);
|
||||
void replace(BuildContext context) =>
|
||||
context.replace(location, extra: $extra);
|
||||
}
|
||||
|
||||
RouteBase get $bangCategoriesRoute => GoRouteData.$route(
|
||||
@@ -492,6 +502,12 @@ RouteBase get $feedListRoute => GoRouteData.$route(
|
||||
|
||||
factory: $FeedListRouteExtension._fromState,
|
||||
routes: [
|
||||
GoRouteData.$route(
|
||||
path: 'add',
|
||||
name: 'FeedAddRoute',
|
||||
|
||||
factory: $FeedAddRouteExtension._fromState,
|
||||
),
|
||||
GoRouteData.$route(
|
||||
path: 'articles/:feedId',
|
||||
name: 'FeedArticleListRoute',
|
||||
@@ -505,11 +521,23 @@ RouteBase get $feedListRoute => GoRouteData.$route(
|
||||
factory: $FeedArticleRouteExtension._fromState,
|
||||
),
|
||||
GoRouteData.$route(
|
||||
path: 'create',
|
||||
path: 'create/:feedId',
|
||||
name: 'FeedCreateRoute',
|
||||
|
||||
factory: $FeedCreateRouteExtension._fromState,
|
||||
),
|
||||
GoRouteData.$route(
|
||||
path: 'available/:feedsJson',
|
||||
name: 'SelectFeedDialogRoute',
|
||||
|
||||
factory: $SelectFeedDialogRouteExtension._fromState,
|
||||
),
|
||||
GoRouteData.$route(
|
||||
path: 'edit/:feedId',
|
||||
name: 'FeedEditRoute',
|
||||
|
||||
factory: $FeedEditRouteExtension._fromState,
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
@@ -528,6 +556,24 @@ extension $FeedListRouteExtension on FeedListRoute {
|
||||
void replace(BuildContext context) => context.replace(location);
|
||||
}
|
||||
|
||||
extension $FeedAddRouteExtension on FeedAddRoute {
|
||||
static FeedAddRoute _fromState(GoRouterState state) =>
|
||||
FeedAddRoute($extra: state.extra as Uri?);
|
||||
|
||||
String get location => GoRouteData.$location('/feeds/add');
|
||||
|
||||
void go(BuildContext context) => context.go(location, extra: $extra);
|
||||
|
||||
Future<T?> push<T>(BuildContext context) =>
|
||||
context.push<T>(location, extra: $extra);
|
||||
|
||||
void pushReplacement(BuildContext context) =>
|
||||
context.pushReplacement(location, extra: $extra);
|
||||
|
||||
void replace(BuildContext context) =>
|
||||
context.replace(location, extra: $extra);
|
||||
}
|
||||
|
||||
extension $FeedArticleListRouteExtension on FeedArticleListRoute {
|
||||
static FeedArticleListRoute _fromState(GoRouterState state) =>
|
||||
FeedArticleListRoute(feedId: Uri.parse(state.pathParameters['feedId']!)!);
|
||||
@@ -564,9 +610,48 @@ extension $FeedArticleRouteExtension on FeedArticleRoute {
|
||||
}
|
||||
|
||||
extension $FeedCreateRouteExtension on FeedCreateRoute {
|
||||
static FeedCreateRoute _fromState(GoRouterState state) => FeedCreateRoute();
|
||||
static FeedCreateRoute _fromState(GoRouterState state) =>
|
||||
FeedCreateRoute(feedId: Uri.parse(state.pathParameters['feedId']!)!);
|
||||
|
||||
String get location => GoRouteData.$location('/feeds/create');
|
||||
String get location => GoRouteData.$location(
|
||||
'/feeds/create/${Uri.encodeComponent(feedId.toString())}',
|
||||
);
|
||||
|
||||
void go(BuildContext context) => context.go(location);
|
||||
|
||||
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
|
||||
|
||||
void pushReplacement(BuildContext context) =>
|
||||
context.pushReplacement(location);
|
||||
|
||||
void replace(BuildContext context) => context.replace(location);
|
||||
}
|
||||
|
||||
extension $SelectFeedDialogRouteExtension on SelectFeedDialogRoute {
|
||||
static SelectFeedDialogRoute _fromState(GoRouterState state) =>
|
||||
SelectFeedDialogRoute(feedsJson: state.pathParameters['feedsJson']!);
|
||||
|
||||
String get location => GoRouteData.$location(
|
||||
'/feeds/available/${Uri.encodeComponent(feedsJson)}',
|
||||
);
|
||||
|
||||
void go(BuildContext context) => context.go(location);
|
||||
|
||||
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
|
||||
|
||||
void pushReplacement(BuildContext context) =>
|
||||
context.pushReplacement(location);
|
||||
|
||||
void replace(BuildContext context) => context.replace(location);
|
||||
}
|
||||
|
||||
extension $FeedEditRouteExtension on FeedEditRoute {
|
||||
static FeedEditRoute _fromState(GoRouterState state) =>
|
||||
FeedEditRoute(feedId: Uri.parse(state.pathParameters['feedId']!)!);
|
||||
|
||||
String get location => GoRouteData.$location(
|
||||
'/feeds/edit/${Uri.encodeComponent(feedId.toString())}',
|
||||
);
|
||||
|
||||
void go(BuildContext context) => context.go(location);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user