mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-05 19:21:23 -06:00
[client] Add resources to recents on open
This commit is contained in:
@@ -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()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user