Enhance video playback cubit resilience and K-12 curriculum flow

This commit is contained in:
Hamza-Ayed
2026-08-31 17:46:03 +03:00
parent 78b703f625
commit d8a50bb105
34 changed files with 2934 additions and 75 deletions
@@ -0,0 +1,67 @@
import 'package:flutter/services.dart';
import 'package:flutter_secure_storage/flutter_secure_storage.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../utils/app_logger.dart';
/// Ultra-Resilient Storage Service for Admin App
class StorageService {
final FlutterSecureStorage _secureStorage;
StorageService({FlutterSecureStorage? secureStorage})
: _secureStorage = secureStorage ??
const FlutterSecureStorage(
mOptions: MacOsOptions(
accessibility: KeychainAccessibility.first_unlock,
),
aOptions: AndroidOptions(
encryptedSharedPreferences: true,
),
);
static const String _keyToken = 'saqel_admin_jwt_token';
static const String _keyUser = 'saqel_admin_user_data';
Future<void> _writeSafe(String key, String value) async {
try {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(key, value);
} catch (e) {
AppLogger.log('Prefs write notice ($key): $e', tag: 'STORAGE');
}
try {
await _secureStorage.write(key: key, value: value);
} on PlatformException catch (e) {
AppLogger.log('Keychain notice ($key): ${e.message}', tag: 'STORAGE');
} catch (_) {}
}
Future<String?> _readSafe(String key) async {
try {
final val = await _secureStorage.read(key: key);
if (val != null && val.isNotEmpty) return val;
} catch (_) {}
try {
final prefs = await SharedPreferences.getInstance();
return prefs.getString(key);
} catch (_) {
return null;
}
}
Future<void> saveToken(String token) async => await _writeSafe(_keyToken, token);
Future<String?> getToken() async => await _readSafe(_keyToken);
Future<void> clearSession() async {
try {
final prefs = await SharedPreferences.getInstance();
await prefs.remove(_keyToken);
await prefs.remove(_keyUser);
} catch (_) {}
try {
await _secureStorage.delete(key: _keyToken);
await _secureStorage.delete(key: _keyUser);
} catch (_) {}
}
}