2026-03-20 15:29:06 +08:00
|
|
|
import 'dart:async';
|
|
|
|
|
|
2026-03-20 01:30:34 +08:00
|
|
|
import '../../../users/data/models/user_response.dart';
|
2026-03-20 15:29:06 +08:00
|
|
|
import 'user_profile_cache_repository.dart';
|
2026-03-20 01:30:34 +08:00
|
|
|
|
|
|
|
|
class SettingsUserCache {
|
2026-03-20 15:29:06 +08:00
|
|
|
final UserProfileCacheRepository _repository;
|
|
|
|
|
|
|
|
|
|
SettingsUserCache(this._repository);
|
|
|
|
|
|
2026-03-20 01:30:34 +08:00
|
|
|
UserResponse? _cachedUser;
|
|
|
|
|
|
|
|
|
|
UserResponse? get cachedUser => _cachedUser;
|
|
|
|
|
|
2026-03-20 15:29:06 +08:00
|
|
|
Future<UserResponse> getProfile({bool forceRefresh = false}) async {
|
|
|
|
|
final user = await _repository.getProfile(forceRefresh: forceRefresh);
|
|
|
|
|
_cachedUser = user;
|
|
|
|
|
return user;
|
2026-03-20 01:30:34 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void set(UserResponse user) {
|
|
|
|
|
_cachedUser = user;
|
2026-03-20 15:29:06 +08:00
|
|
|
unawaited(_repository.setCached(user));
|
2026-03-20 01:30:34 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void invalidate() {
|
|
|
|
|
_cachedUser = null;
|
2026-03-20 15:29:06 +08:00
|
|
|
unawaited(_repository.invalidate());
|
2026-03-20 01:30:34 +08:00
|
|
|
}
|
|
|
|
|
}
|