mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-06 03:31:02 -06:00
[client] Build pages from routes
This commit is contained in:
@@ -3,10 +3,6 @@ import 'package:offtheline/offtheline.dart';
|
||||
import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/ui/app/dialog_scaffold.dart';
|
||||
import 'package:phylum/ui/app/router.dart';
|
||||
import 'package:phylum/ui/app/routes.dart';
|
||||
import 'package:phylum/ui/login/login_page.dart';
|
||||
import 'package:phylum/ui/layout/app_layout.dart';
|
||||
import 'package:phylum/ui/login/reset_password_page.dart';
|
||||
import 'package:phylum/util/dialogs.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
@@ -80,22 +76,6 @@ class _AccountSelectorState extends State<AccountSelector> {
|
||||
);
|
||||
}
|
||||
|
||||
final route = context.select<PhylumRouterDelegate, ResetPasswordRoute?>((state) =>
|
||||
state.currentConfiguration is ResetPasswordRoute ? state.currentConfiguration as ResetPasswordRoute : null);
|
||||
if (route != null) {
|
||||
return ResetPasswordPage(
|
||||
instanceUrl: route.instanceUri,
|
||||
email: route.email,
|
||||
token: route.token,
|
||||
);
|
||||
}
|
||||
|
||||
final account =
|
||||
context.select<AccountManagerState<PhylumAccount>, PhylumAccount?>((state) => state.selectedAccount);
|
||||
|
||||
if (account == null) {
|
||||
return const LoginPage();
|
||||
}
|
||||
return AppLayout.create(account);
|
||||
return context.watch<PhylumRouterDelegate>().currentConfiguration?.buildPage(context) ?? Container();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,16 +2,11 @@ import 'dart:async';
|
||||
import 'dart:js_interop';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:offtheline/offtheline.dart';
|
||||
import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/ui/app/dialog_scaffold.dart';
|
||||
import 'package:phylum/ui/app/routes.dart';
|
||||
import 'package:phylum/ui/app/router.dart';
|
||||
import 'package:phylum/ui/login/login_page.dart';
|
||||
import 'package:phylum/ui/layout/app_layout.dart';
|
||||
import 'package:phylum/ui/login/reset_password_page.dart';
|
||||
import 'package:phylum/util/dialogs.dart';
|
||||
import 'package:phylum/util/logging.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -125,30 +120,7 @@ class _AccountSelectorState extends State<AccountSelector> {
|
||||
);
|
||||
}
|
||||
|
||||
final resetRoute = context.select<PhylumRouterDelegate, ResetPasswordRoute?>((state) =>
|
||||
state.currentConfiguration is ResetPasswordRoute ? state.currentConfiguration as ResetPasswordRoute : null);
|
||||
if (resetRoute != null) {
|
||||
return ResetPasswordPage(
|
||||
instanceUrl: resetRoute.instanceUri,
|
||||
email: resetRoute.email,
|
||||
token: resetRoute.token,
|
||||
);
|
||||
}
|
||||
|
||||
final oauthLoginRoute = context.select<PhylumRouterDelegate, OAuthLoginRoute?>((state) {
|
||||
return state.currentConfiguration is OAuthLoginRoute ? state.currentConfiguration as OAuthLoginRoute : null;
|
||||
});
|
||||
if (oauthLoginRoute != null) {
|
||||
print('Code: ${oauthLoginRoute.code}');
|
||||
}
|
||||
|
||||
final account =
|
||||
context.select<AccountManagerState<PhylumAccount>, PhylumAccount?>((state) => state.selectedAccount);
|
||||
|
||||
if (account == null) {
|
||||
return kDebugMode ? const LoginPage() : LoginPage(fixedInstanceUrl: Uri());
|
||||
}
|
||||
return AppLayout.create(account);
|
||||
return context.watch<PhylumRouterDelegate>().currentConfiguration?.buildPage(context) ?? Container();
|
||||
}
|
||||
|
||||
void requestHandoff() {
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:offtheline/offtheline.dart';
|
||||
import 'package:phylum/libphylum/db/db.dart';
|
||||
import 'package:phylum/libphylum/db/resource_helpers.dart';
|
||||
@@ -7,11 +9,17 @@ import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/libphylum/requests/search_request.dart';
|
||||
import 'package:phylum/libphylum/requests/shared_resources_request.dart';
|
||||
import 'package:phylum/libphylum/responses/responses.dart';
|
||||
import 'package:phylum/ui/layout/app_layout.dart';
|
||||
import 'package:phylum/ui/login/login_page.dart';
|
||||
import 'package:phylum/ui/login/reset_password_page.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
sealed class PhylumRoute {
|
||||
Uri get uri;
|
||||
|
||||
const PhylumRoute();
|
||||
|
||||
Widget buildPage(BuildContext context);
|
||||
}
|
||||
|
||||
class OAuthLoginRoute extends PhylumRoute {
|
||||
@@ -21,6 +29,11 @@ class OAuthLoginRoute extends PhylumRoute {
|
||||
|
||||
@override
|
||||
Uri get uri => Uri(path: '/login/oauth');
|
||||
|
||||
@override
|
||||
Widget buildPage(BuildContext context) {
|
||||
return const LoginPage();
|
||||
}
|
||||
}
|
||||
|
||||
class ResetPasswordRoute extends PhylumRoute {
|
||||
@@ -32,6 +45,13 @@ class ResetPasswordRoute extends PhylumRoute {
|
||||
|
||||
@override
|
||||
Uri get uri => Uri(path: '/reset_password');
|
||||
|
||||
@override
|
||||
Widget buildPage(BuildContext context) => ResetPasswordPage(
|
||||
instanceUrl: instanceUri,
|
||||
email: email,
|
||||
token: token,
|
||||
);
|
||||
}
|
||||
|
||||
sealed class ExplorerRoute extends PhylumRoute {
|
||||
@@ -44,6 +64,17 @@ sealed class ExplorerRoute extends PhylumRoute {
|
||||
Future<bool> refresh(PhylumAccount account);
|
||||
|
||||
Stream<List<Resource>> items(PhylumAccount account);
|
||||
|
||||
@override
|
||||
Widget buildPage(BuildContext context) {
|
||||
final account =
|
||||
context.select<AccountManagerState<PhylumAccount>, PhylumAccount?>((state) => state.selectedAccount);
|
||||
|
||||
if (account == null) {
|
||||
return kDebugMode ? const LoginPage() : LoginPage(fixedInstanceUrl: Uri());
|
||||
}
|
||||
return AppLayout.create(account);
|
||||
}
|
||||
}
|
||||
|
||||
class ExplorerRouteHome extends ExplorerRouteFolder {
|
||||
|
||||
Reference in New Issue
Block a user