mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-05-07 04:39:25 -05:00
[client] Update url on web
This commit is contained in:
+24
-15
@@ -7,29 +7,18 @@ import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/ui/app/app_layout.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
final _router = GoRouter(
|
||||
routes: [
|
||||
GoRoute(
|
||||
name: 'home',
|
||||
path: '/',
|
||||
builder: (context, state) => const AppScaffold(),
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
class PhylumApp extends StatelessWidget {
|
||||
final String accountId;
|
||||
final PhylumAccount account;
|
||||
|
||||
PhylumApp({required this.accountId}) : super(key: ValueKey(accountId));
|
||||
PhylumApp({required this.account}) : super(key: ValueKey(account.id));
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final account = context.select<AccountManagerState<PhylumAccount>, PhylumAccount?>((state) => state.accounts[accountId]);
|
||||
if (account == null) return Container();
|
||||
return MultiProvider(
|
||||
providers: [
|
||||
Provider.value(value: account),
|
||||
StateNotifierProvider<ApiActionQueue, ApiActionQueueState>.value(value: account.actionQueue),
|
||||
// StateNotifierProvider<NavHistoryManager, NavHistoryState>.value(value: routerConfig.historyManager),
|
||||
],
|
||||
child: MaterialApp.router(
|
||||
key: ValueKey(account),
|
||||
@@ -37,9 +26,29 @@ class PhylumApp extends StatelessWidget {
|
||||
debugShowCheckedModeBanner: false,
|
||||
theme: ThemeData(colorScheme: ColorScheme.fromSeed(seedColor: Colors.orange)),
|
||||
darkTheme: ThemeData.dark(),
|
||||
routerConfig: _router,
|
||||
routerConfig: createRouter(account),
|
||||
shortcuts: getAppShortcuts(),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
GoRouter createRouter(PhylumAccount account) => GoRouter(
|
||||
routes: [
|
||||
GoRoute(
|
||||
name: 'root',
|
||||
path: '/',
|
||||
redirect: (context, state) => '/home',
|
||||
),
|
||||
GoRoute(
|
||||
name: 'home',
|
||||
path: '/home',
|
||||
pageBuilder: (context, state) => NoTransitionPage(child: AppScaffold(folderId: account.userHome)),
|
||||
),
|
||||
GoRoute(
|
||||
name: 'folder',
|
||||
path: '/folders/:id',
|
||||
pageBuilder: (context, state) => NoTransitionPage(child: AppScaffold(folderId: state.pathParameters['id']!)),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
|
||||
@@ -99,7 +100,7 @@ Map<ShortcutActivator, Intent> getAppShortcuts() {
|
||||
|
||||
// Top-level Navigation
|
||||
SingleActivator(LogicalKeyboardKey.arrowUp, alt: true): NavUpIntent(),
|
||||
SingleActivator(LogicalKeyboardKey.arrowLeft, alt: true): NavBackIntent(),
|
||||
SingleActivator(LogicalKeyboardKey.arrowRight, alt: true): NavForwardIntent(),
|
||||
if (!kIsWeb) SingleActivator(LogicalKeyboardKey.arrowLeft, alt: true): NavBackIntent(),
|
||||
if (!kIsWeb) SingleActivator(LogicalKeyboardKey.arrowRight, alt: true): NavForwardIntent(),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -71,7 +71,7 @@ class AccountSelector extends StatelessWidget {
|
||||
if (account == null) {
|
||||
return buildLoginPage(context);
|
||||
}
|
||||
return PhylumApp(accountId: account.id);
|
||||
return PhylumApp(account: account);
|
||||
});
|
||||
|
||||
Widget buildLoginPage(BuildContext context) => MaterialApp(
|
||||
|
||||
@@ -1,49 +1,52 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:phylum/app_shortcuts.dart';
|
||||
import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/ui/app/app_layout.dart';
|
||||
import 'package:phylum/ui/app/nav_history.dart';
|
||||
import 'package:phylum/util/upload_utils.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class AppActions extends StatelessWidget {
|
||||
const AppActions({super.key});
|
||||
final Widget child;
|
||||
const AppActions({super.key, required this.child});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Actions(
|
||||
actions: {
|
||||
NewFolderIntent: CallbackAction<NewFolderIntent>(onInvoke: (intent) {
|
||||
final folderId = context.read<NavHistoryState>().folderId;
|
||||
final folderId = context.read<CurrentLocation>().folderId;
|
||||
return createDirectory(context, folderId);
|
||||
}),
|
||||
UploadFilesIntent: CallbackAction<UploadFilesIntent>(onInvoke: (intent) {
|
||||
final folderId = context.read<NavHistoryState>().folderId;
|
||||
final folderId = context.read<CurrentLocation>().folderId;
|
||||
return pickAndUploadFiles(context, folderId);
|
||||
}),
|
||||
UploadFolderIntent: CallbackAction<UploadFolderIntent>(onInvoke: (intent) {
|
||||
final folderId = context.read<NavHistoryState>().folderId;
|
||||
final folderId = context.read<CurrentLocation>().folderId;
|
||||
return pickAndUploadDirectory(context, folderId);
|
||||
}),
|
||||
NavUpIntent: CallbackAction<NavUpIntent>(onInvoke: (i) async {
|
||||
final folderId = context.read<NavHistoryState>().folderId;
|
||||
final folderId = context.read<CurrentLocation>().folderId;
|
||||
final r = await context.read<PhylumAccount>().resourceRepository.getResource(folderId);
|
||||
final parent = r?.parent;
|
||||
if (parent != null && context.mounted) {
|
||||
context.read<NavHistoryManager>().go(parent);
|
||||
context.goNamed('folder', pathParameters: {'id': parent});
|
||||
}
|
||||
return null;
|
||||
}),
|
||||
NavBackIntent: CallbackAction<NavBackIntent>(onInvoke: (i) {
|
||||
context.read<NavHistoryManager>().goBack();
|
||||
if (context.canPop()) {
|
||||
context.pop();
|
||||
}
|
||||
return null;
|
||||
}),
|
||||
NavForwardIntent: CallbackAction<NavForwardIntent>(onInvoke: (i) {
|
||||
context.read<NavHistoryManager>().goForward();
|
||||
// context.read<NavHistoryManager>().goForward();
|
||||
return null;
|
||||
}),
|
||||
},
|
||||
child: const AppLayout(),
|
||||
child: child,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,23 +1,29 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_state_notifier/flutter_state_notifier.dart';
|
||||
import 'package:phylum/app_shortcuts.dart';
|
||||
import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/ui/app/app_actions.dart';
|
||||
import 'package:phylum/ui/common/expandable_fab.dart';
|
||||
import 'package:phylum/ui/app/nav_list.dart';
|
||||
import 'package:phylum/ui/folder/folder_view.dart';
|
||||
import 'package:phylum/ui/app/nav_history.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class CurrentLocation {
|
||||
final String folderId;
|
||||
|
||||
CurrentLocation({required this.folderId});
|
||||
}
|
||||
|
||||
class AppScaffold extends StatelessWidget {
|
||||
final String? initialDirectory;
|
||||
const AppScaffold({super.key, this.initialDirectory});
|
||||
final String folderId;
|
||||
|
||||
const AppScaffold({super.key, required this.folderId});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return StateNotifierProvider<NavHistoryManager, NavHistoryState>(
|
||||
create: (context) => NavHistoryManager(initialDirectory ?? context.read<PhylumAccount>().userHome),
|
||||
builder: (context, child) => const AppActions(),
|
||||
return Provider<CurrentLocation>(
|
||||
key: ValueKey(folderId),
|
||||
create: (context) => CurrentLocation(folderId: folderId),
|
||||
builder: (context, child) => AppActions(child: child!),
|
||||
child: const AppLayout(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ import 'dart:math';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:go_router/go_router.dart';
|
||||
import 'package:phylum/app_shortcuts.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_delete.dart';
|
||||
import 'package:phylum/libphylum/actions/action_resource_move.dart';
|
||||
@@ -10,7 +11,6 @@ import 'package:phylum/libphylum/db/db.dart';
|
||||
import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/ui/folder/folder_selection_manager.dart';
|
||||
import 'package:phylum/ui/folder/resource_details_row.dart';
|
||||
import 'package:phylum/ui/app/nav_history.dart';
|
||||
import 'package:phylum/util/upload_utils.dart';
|
||||
import 'package:phylum/util/dialogs.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
@@ -244,7 +244,7 @@ class _FolderContentsViewState extends State<FolderContentsView> {
|
||||
}
|
||||
|
||||
void open(Resource r) {
|
||||
if (r.dir) context.read<NavHistoryManager>().go(r.id);
|
||||
if (r.dir) context.goNamed('folder', pathParameters: {'id': r.id});
|
||||
}
|
||||
|
||||
void deleteSelected() async {
|
||||
|
||||
@@ -4,10 +4,10 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_state_notifier/flutter_state_notifier.dart';
|
||||
import 'package:phylum/libphylum/db/db.dart';
|
||||
import 'package:phylum/libphylum/phylum_account.dart';
|
||||
import 'package:phylum/ui/app/app_layout.dart';
|
||||
import 'package:phylum/ui/folder/folder_contents_view.dart';
|
||||
import 'package:phylum/ui/folder/folder_empty_view.dart';
|
||||
import 'package:phylum/ui/folder/folder_selection_manager.dart';
|
||||
import 'package:phylum/ui/app/nav_history.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
|
||||
class FolderView extends StatelessWidget {
|
||||
@@ -39,10 +39,7 @@ class FolderWatcher extends StatelessWidget {
|
||||
const FolderWatcher({super.key});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
final folderId = context.select<NavHistoryState, String>((s) => s.folderId);
|
||||
return FolderContentsListener(id: folderId);
|
||||
}
|
||||
Widget build(BuildContext context) => FolderContentsListener(id: context.watch<CurrentLocation>().folderId);
|
||||
}
|
||||
|
||||
class FolderContentsListener extends StatefulWidget {
|
||||
|
||||
Reference in New Issue
Block a user