diff --git a/mobile/lib/main.dart b/mobile/lib/main.dart index 672198e5bf..8d2094a434 100644 --- a/mobile/lib/main.dart +++ b/mobile/lib/main.dart @@ -14,6 +14,7 @@ import 'package:immich_mobile/modules/backup/models/duplicated_asset.model.dart' import 'package:immich_mobile/modules/backup/providers/backup.provider.dart'; import 'package:immich_mobile/modules/backup/providers/ios_background_settings.provider.dart'; import 'package:immich_mobile/modules/login/providers/authentication.provider.dart'; +import 'package:immich_mobile/modules/memories/providers/memory.provider.dart'; import 'package:immich_mobile/modules/onboarding/providers/gallery_permission.provider.dart'; import 'package:immich_mobile/modules/settings/providers/notification_permission.provider.dart'; import 'package:immich_mobile/routing/router.dart'; @@ -156,6 +157,8 @@ class ImmichAppState extends ConsumerState ref.read(iOSBackgroundSettingsProvider.notifier).refresh(); + ref.read(todayProvider.notifier).update(); + break; case AppLifecycleState.inactive: diff --git a/mobile/lib/modules/memories/providers/memory.provider.dart b/mobile/lib/modules/memories/providers/memory.provider.dart index 2552b243de..c2565c4871 100644 --- a/mobile/lib/modules/memories/providers/memory.provider.dart +++ b/mobile/lib/modules/memories/providers/memory.provider.dart @@ -2,9 +2,26 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:immich_mobile/modules/memories/models/memory.dart'; import 'package:immich_mobile/modules/memories/services/memory.service.dart'; +/// A notifier to be used with the Memory Lane service. Sets the date, and +/// will update the date to now on app resume so that the memory provider +/// can update accordingly +class TodayNotifier extends StateNotifier { + TodayNotifier() : super(DateTime.now()); + + /// Sets the time to now to refresh today + void update() { + state = DateTime.now(); + } +} + +final todayProvider = StateNotifierProvider((ref) { + return TodayNotifier(); +}); + final memoryFutureProvider = FutureProvider.autoDispose?>((ref) async { final service = ref.watch(memoryServiceProvider); + final today = ref.watch(todayProvider); - return await service.getMemoryLane(); + return await service.getMemoryLane(now: today); }); diff --git a/mobile/lib/modules/memories/services/memory.service.dart b/mobile/lib/modules/memories/services/memory.service.dart index ab38c0694d..4220a3e640 100644 --- a/mobile/lib/modules/memories/services/memory.service.dart +++ b/mobile/lib/modules/memories/services/memory.service.dart @@ -19,9 +19,10 @@ class MemoryService { MemoryService(this._apiService); - Future?> getMemoryLane() async { + Future?> getMemoryLane({DateTime? now}) async { try { - final now = DateTime.now(); + // Use the provided DateTime or default to now + now = now ?? DateTime.now(); final beginningOfDate = DateTime(now.year, now.month, now.day); final data = await _apiService.assetApi.getMemoryLane( beginningOfDate,