diff --git a/client/lib/libphylum/explorer/explorer_navigator.dart b/client/lib/libphylum/explorer/explorer_navigator.dart index 878b7ed8..f0830e79 100644 --- a/client/lib/libphylum/explorer/explorer_navigator.dart +++ b/client/lib/libphylum/explorer/explorer_navigator.dart @@ -1,3 +1,6 @@ +import 'package:drift/drift.dart'; +import 'package:phylum/libphylum/db/db.dart'; +import 'package:phylum/libphylum/phylum_account.dart'; import 'package:state_notifier/state_notifier.dart'; import 'page.dart'; @@ -27,9 +30,12 @@ class ExplorerNavigatorState { } class ExplorerNavigator extends StateNotifier { + final PhylumAccount? _account; ExplorerPage get current => state.current; - ExplorerNavigator(ExplorerPage page) : super(ExplorerNavigatorState(current: page)); + ExplorerNavigator({required PhylumAccount? account, required ExplorerPage page}) + : _account = account, + super(ExplorerNavigatorState(current: page)); void go(ExplorerPage page) { if (state.current != page) { @@ -38,6 +44,9 @@ class ExplorerNavigator extends StateNotifier { back: [...state._back, state.current], forward: const [], ); + if (page is ExplorerPageFolder && _account != null && page.folderId != _account.userHome) { + _account.db.recents.insertOnConflictUpdate(Recent(resourceId: page.folderId, accessed: DateTime.now())); + } } } diff --git a/client/lib/ui/app/app_layout.dart b/client/lib/ui/app/app_layout.dart index 5fb18fc0..b153c59d 100644 --- a/client/lib/ui/app/app_layout.dart +++ b/client/lib/ui/app/app_layout.dart @@ -35,7 +35,7 @@ class _AppLayoutState extends State { return MultiProvider( providers: [ StateNotifierProvider( - create: (context) => ExplorerNavigator(widget.page), + create: (context) => ExplorerNavigator(account: context.read(), page: widget.page), ), StateNotifierProvider( create: (context) => ExplorerController( diff --git a/client/lib/ui/destination_picker/destination_picker.dart b/client/lib/ui/destination_picker/destination_picker.dart index 479a786c..e942985f 100644 --- a/client/lib/ui/destination_picker/destination_picker.dart +++ b/client/lib/ui/destination_picker/destination_picker.dart @@ -26,7 +26,7 @@ class DestinationPicker extends StatefulWidget { builder: (context) => MultiProvider( providers: [ StateNotifierProvider( - create: (context) => ExplorerNavigator(ExplorerPageFolder(folderId: initialFolderId)), + create: (context) => ExplorerNavigator(account: null, page: ExplorerPageFolder(folderId: initialFolderId)), ), StateNotifierProvider( create: (context) => ExplorerController( diff --git a/client/lib/ui/preview/resource_preview.dart b/client/lib/ui/preview/resource_preview.dart index da57cfa0..4dc82352 100644 --- a/client/lib/ui/preview/resource_preview.dart +++ b/client/lib/ui/preview/resource_preview.dart @@ -1,3 +1,4 @@ +import 'package:drift/drift.dart'; import 'package:flutter/material.dart'; import 'package:phylum/integrations/download_manager.dart'; import 'package:phylum/libphylum/db/db.dart'; @@ -12,6 +13,7 @@ class ResourcePreview extends StatefulWidget { ResourcePreview({required this.resourceId}) : super(key: ValueKey(resourceId)); static Future showPreview(BuildContext context, String resourceId) async { + context.read().db.recents.insertOnConflictUpdate(Recent(resourceId: resourceId, accessed: DateTime.now())); return showDialog(context: context, builder: (context) => ResourcePreview(resourceId: resourceId)); }