150 lines
4.3 KiB
Dart
150 lines
4.3 KiB
Dart
export 'legacy_settings_recovery.dart';
|
|
export 'secret_store.dart';
|
|
export 'settings_store.dart';
|
|
|
|
import 'legacy_settings_recovery.dart';
|
|
import 'runtime_models.dart';
|
|
import 'secret_store.dart';
|
|
import 'settings_store.dart';
|
|
|
|
class SecureConfigStore {
|
|
SecureConfigStore({
|
|
Future<String?> Function()? fallbackDirectoryPathResolver,
|
|
Future<String?> Function()? databasePathResolver,
|
|
SecureConfigDatabaseOpener? databaseOpener,
|
|
SecureStorageClient? secureStorage,
|
|
bool enableSecureStorage = true,
|
|
}) {
|
|
_secretStore = SecretStore(
|
|
fallbackDirectoryPathResolver: fallbackDirectoryPathResolver,
|
|
databasePathResolver: databasePathResolver,
|
|
secureStorage: secureStorage,
|
|
enableSecureStorage: enableSecureStorage,
|
|
);
|
|
_settingsStore = SettingsStore(
|
|
fallbackDirectoryPathResolver: fallbackDirectoryPathResolver,
|
|
databasePathResolver: databasePathResolver,
|
|
databaseOpener: databaseOpener,
|
|
legacyLocalStateKeyLoader: _secretStore.loadLegacyLocalStateKeyBytes,
|
|
);
|
|
}
|
|
|
|
late final SecretStore _secretStore;
|
|
late final SettingsStore _settingsStore;
|
|
|
|
LegacyRecoveryReport get lastRecoveryReport =>
|
|
_settingsStore.lastRecoveryReport;
|
|
|
|
Future<void> initialize() async {
|
|
await _secretStore.initialize();
|
|
await _settingsStore.initialize();
|
|
}
|
|
|
|
Future<SettingsSnapshot> loadSettingsSnapshot() {
|
|
return _settingsStore.loadSettingsSnapshot();
|
|
}
|
|
|
|
Future<void> saveSettingsSnapshot(SettingsSnapshot snapshot) {
|
|
return _settingsStore.saveSettingsSnapshot(snapshot);
|
|
}
|
|
|
|
Future<List<AssistantThreadRecord>> loadAssistantThreadRecords() {
|
|
return _settingsStore.loadAssistantThreadRecords();
|
|
}
|
|
|
|
Future<void> saveAssistantThreadRecords(List<AssistantThreadRecord> records) {
|
|
return _settingsStore.saveAssistantThreadRecords(records);
|
|
}
|
|
|
|
Future<void> clearAssistantLocalState() {
|
|
return _settingsStore.clearAssistantLocalState();
|
|
}
|
|
|
|
Future<List<SecretAuditEntry>> loadAuditTrail() {
|
|
return _settingsStore.loadAuditTrail();
|
|
}
|
|
|
|
Future<void> appendAudit(SecretAuditEntry entry) {
|
|
return _settingsStore.appendAudit(entry);
|
|
}
|
|
|
|
Future<Map<String, String>> loadSecureRefs() {
|
|
return _secretStore.loadSecureRefs();
|
|
}
|
|
|
|
Future<String?> loadGatewayToken() => _secretStore.loadGatewayToken();
|
|
|
|
Future<void> saveGatewayToken(String value) =>
|
|
_secretStore.saveGatewayToken(value);
|
|
|
|
Future<void> clearGatewayToken() => _secretStore.clearGatewayToken();
|
|
|
|
Future<String?> loadGatewayPassword() => _secretStore.loadGatewayPassword();
|
|
|
|
Future<void> saveGatewayPassword(String value) =>
|
|
_secretStore.saveGatewayPassword(value);
|
|
|
|
Future<void> clearGatewayPassword() => _secretStore.clearGatewayPassword();
|
|
|
|
Future<String?> loadOllamaCloudApiKey() =>
|
|
_secretStore.loadOllamaCloudApiKey();
|
|
|
|
Future<void> saveOllamaCloudApiKey(String value) =>
|
|
_secretStore.saveOllamaCloudApiKey(value);
|
|
|
|
Future<String?> loadVaultToken() => _secretStore.loadVaultToken();
|
|
|
|
Future<void> saveVaultToken(String value) =>
|
|
_secretStore.saveVaultToken(value);
|
|
|
|
Future<String?> loadAiGatewayApiKey() => _secretStore.loadAiGatewayApiKey();
|
|
|
|
Future<void> saveAiGatewayApiKey(String value) =>
|
|
_secretStore.saveAiGatewayApiKey(value);
|
|
|
|
Future<void> clearAiGatewayApiKey() => _secretStore.clearAiGatewayApiKey();
|
|
|
|
Future<LocalDeviceIdentity?> loadDeviceIdentity() {
|
|
return _secretStore.loadDeviceIdentity();
|
|
}
|
|
|
|
Future<void> saveDeviceIdentity(LocalDeviceIdentity identity) {
|
|
return _secretStore.saveDeviceIdentity(identity);
|
|
}
|
|
|
|
Future<String?> loadDeviceToken({
|
|
required String deviceId,
|
|
required String role,
|
|
}) {
|
|
return _secretStore.loadDeviceToken(deviceId: deviceId, role: role);
|
|
}
|
|
|
|
Future<void> saveDeviceToken({
|
|
required String deviceId,
|
|
required String role,
|
|
required String token,
|
|
}) {
|
|
return _secretStore.saveDeviceToken(
|
|
deviceId: deviceId,
|
|
role: role,
|
|
token: token,
|
|
);
|
|
}
|
|
|
|
Future<void> clearDeviceToken({
|
|
required String deviceId,
|
|
required String role,
|
|
}) {
|
|
return _secretStore.clearDeviceToken(deviceId: deviceId, role: role);
|
|
}
|
|
|
|
void dispose() {
|
|
_settingsStore.dispose();
|
|
_secretStore.dispose();
|
|
}
|
|
|
|
static String maskValue(String value) {
|
|
return SecretStore.maskValue(value);
|
|
}
|
|
}
|