feat: add todo cache repository and precise invalidation

This commit is contained in:
qzl
2026-03-20 15:37:59 +08:00
parent 8883248968
commit e64b9c670c
6 changed files with 155 additions and 10 deletions
+1 -8
View File
@@ -1,19 +1,12 @@
import 'dart:async';
import 'hybrid_cache_store.dart';
class CacheInvalidator {
final HybridCacheStore? _store;
final Set<String> _invalidated = <String>{};
CacheInvalidator({HybridCacheStore? store}) : _store = store;
CacheInvalidator({HybridCacheStore? store});
void invalidate(String key) {
_invalidated.add(key);
final removeFuture = _store?.remove(key);
if (removeFuture != null) {
unawaited(removeFuture);
}
}
void invalidateCalendarDay(DateTime date) {
+8
View File
@@ -29,6 +29,7 @@ import '../../features/settings/data/services/settings_user_cache.dart';
import '../../features/settings/data/services/user_profile_cache_repository.dart';
import '../../features/users/data/users_api.dart';
import '../../features/todo/data/todo_api.dart';
import '../../features/todo/data/todo_repository.dart';
final sl = GetIt.instance;
@@ -124,6 +125,13 @@ Future<void> configureDependencies() async {
final todoApi = TodoApi(apiClient);
sl.registerSingleton<TodoApi>(todoApi);
sl.registerSingleton<TodoRepository>(
TodoRepository(
api: todoApi,
store: hybridCacheStore,
invalidator: sl<CacheInvalidator>(),
),
);
final authRepository = AuthRepositoryImpl(
api: authApi,