Files
plezy/lib/services/trakt/trakt_account_store.dart
T
2026-04-19 11:31:27 +02:00

38 lines
1.2 KiB
Dart

import 'package:shared_preferences/shared_preferences.dart';
import 'trakt_constants.dart';
import 'trakt_session.dart';
/// Per-Plex-profile persistence of Trakt OAuth sessions.
///
/// Each Plex Home user can link a different Trakt account. Pass an empty
/// `userUuid` to fall back to a single global slot (used before the user has
/// selected a profile).
class TraktAccountStore {
static const String _baseKey = 'trakt_session';
TraktAccountStore._();
static final TraktAccountStore instance = TraktAccountStore._();
Future<TraktSession?> load(String userUuid) async {
final prefs = await SharedPreferences.getInstance();
final raw = prefs.getString(traktUserKey(userUuid, _baseKey));
if (raw == null) return null;
try {
return TraktSession.decode(raw);
} catch (_) {
return null;
}
}
Future<void> save(String userUuid, TraktSession session) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(traktUserKey(userUuid, _baseKey), session.encode());
}
Future<void> clear(String userUuid) async {
final prefs = await SharedPreferences.getInstance();
await prefs.remove(traktUserKey(userUuid, _baseKey));
}
}