import '../../data/cache/cache_scope.dart'; import '../../data/cache/cache_store.dart'; class SessionScopeManager { SessionScopeManager({required HybridCacheStore cacheStore}) : _cacheStore = cacheStore; final HybridCacheStore _cacheStore; String? _activeUserId; Future activate(String userId) async { final normalizedUserId = userId.trim(); if (normalizedUserId.isEmpty) { throw StateError('User id cannot be empty when activating cache scope'); } final previousUserId = _activeUserId; if (previousUserId == normalizedUserId) { return; } _activeUserId = normalizedUserId; CacheScope.configureProvider(() => 'user:$normalizedUserId'); if (previousUserId != null && previousUserId != normalizedUserId) { await _clearUserCache(previousUserId); } } Future clearActiveUserScope() async { final userId = _activeUserId; _activeUserId = null; CacheScope.resetProvider(); if (userId != null) { await _clearUserCache(userId); } } Future _clearUserCache(String userId) { return _cacheStore.clearByPrefix('cache:user:$userId:'); } }