2026-06-18 21:16:20 +06:00
|
|
|
import 'dart:async';
|
|
|
|
|
|
2026-04-17 20:01:44 +05:30
|
|
|
import 'package:hooks_riverpod/hooks_riverpod.dart';
|
2025-07-04 13:49:15 -05:00
|
|
|
import 'package:immich_mobile/domain/models/memory.model.dart';
|
|
|
|
|
import 'package:immich_mobile/domain/services/memory.service.dart';
|
2026-03-05 18:18:01 +01:00
|
|
|
import 'package:immich_mobile/providers/infrastructure/db.provider.dart';
|
2025-07-04 13:49:15 -05:00
|
|
|
import 'package:immich_mobile/providers/user.provider.dart';
|
|
|
|
|
|
2025-08-27 22:16:41 -04:00
|
|
|
final driftMemoryFutureProvider = FutureProvider.autoDispose<List<DriftMemory>>((ref) {
|
|
|
|
|
final (userId, enabled) = ref.watch(currentUserProvider.select((user) => (user?.id, user?.memoryEnabled ?? true)));
|
|
|
|
|
if (userId == null || !enabled) {
|
|
|
|
|
return const [];
|
2025-07-04 13:49:15 -05:00
|
|
|
}
|
|
|
|
|
|
2026-06-18 21:16:20 +06:00
|
|
|
final now = DateTime.now();
|
|
|
|
|
final nextMidnight = DateTime(now.year, now.month, now.day + 1);
|
|
|
|
|
final timer = Timer(nextMidnight.difference(now) + const Duration(seconds: 5), ref.invalidateSelf);
|
|
|
|
|
ref.onDispose(timer.cancel);
|
|
|
|
|
|
2026-08-17 14:43:32 -07:00
|
|
|
final service = DriftMemoryService(ref.watch(driftProvider).memoryRepository);
|
2025-08-27 22:16:41 -04:00
|
|
|
return service.getMemoryLane(userId);
|
2025-07-04 13:49:15 -05:00
|
|
|
});
|