[client] Add resources to recents on open

This commit is contained in:
Abhishek Shroff
2024-12-04 14:38:48 +05:30
parent 04b68451e9
commit 8c43b6aaa4
4 changed files with 14 additions and 3 deletions

View File

@@ -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<ExplorerNavigatorState> {
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<ExplorerNavigatorState> {
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()));
}
}
}

View File

@@ -35,7 +35,7 @@ class _AppLayoutState extends State<AppLayout> {
return MultiProvider(
providers: [
StateNotifierProvider<ExplorerNavigator, ExplorerNavigatorState>(
create: (context) => ExplorerNavigator(widget.page),
create: (context) => ExplorerNavigator(account: context.read<PhylumAccount>(), page: widget.page),
),
StateNotifierProvider<ExplorerController, ExplorerState>(
create: (context) => ExplorerController(

View File

@@ -26,7 +26,7 @@ class DestinationPicker extends StatefulWidget {
builder: (context) => MultiProvider(
providers: [
StateNotifierProvider<ExplorerNavigator, ExplorerNavigatorState>(
create: (context) => ExplorerNavigator(ExplorerPageFolder(folderId: initialFolderId)),
create: (context) => ExplorerNavigator(account: null, page: ExplorerPageFolder(folderId: initialFolderId)),
),
StateNotifierProvider<ExplorerController, ExplorerState>(
create: (context) => ExplorerController(

View File

@@ -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<void> showPreview(BuildContext context, String resourceId) async {
context.read<PhylumAccount>().db.recents.insertOnConflictUpdate(Recent(resourceId: resourceId, accessed: DateTime.now()));
return showDialog(context: context, builder: (context) => ResourcePreview(resourceId: resourceId));
}