getOrCreateDbKey function
Loads or creates a 32-byte key for database encryption.
Uses FlutterSecureStorage to persist the key.
Implementation
Future<List<int>> getOrCreateDbKey([FlutterSecureStorage? storage]) async {
final store = storage ?? const FlutterSecureStorage();
var stored = await store.read(key: _plexDbKeyStorageKey);
if (stored != null) {
try {
final bytes = base64Decode(stored);
if (bytes.length == 32) return bytes.toList();
} catch (_) {}
}
final newKey = _generateAesKey();
await store.write(key: _plexDbKeyStorageKey, value: base64Encode(newKey));
return newKey;
}