prompt for password once

This commit is contained in:
Scott E. Graves 2025-03-20 18:36:10 -05:00
parent 6570438872
commit d9b8a60055

View File

@ -235,41 +235,45 @@ bool validateSettings(
} }
Future<Map<String, dynamic>> convertAllToString( Future<Map<String, dynamic>> convertAllToString(
Map<String, dynamic> settings, { Map<String, dynamic> settings,
String? password, ) async {
}) async { String? password;
for (var entry in settings.entries) { Future<Map<String, dynamic>> convert(Map<String, dynamic> settings) async {
if (entry.value is Map<String, dynamic>) { for (var entry in settings.entries) {
convertAllToString(entry.value, password: password); if (entry.value is Map<String, dynamic>) {
continue; convert(entry.value);
}
if (entry.key == 'ApiPassword' ||
entry.key == 'EncryptionToken' ||
entry.key == 'SecretKey') {
if (entry.value.isEmpty) {
continue; continue;
} }
if (password == null) { if (entry.key == 'ApiPassword' ||
password = await promptPassword(); entry.key == 'EncryptionToken' ||
if (password == null) { entry.key == 'SecretKey') {
throw NullPasswordException(); if (entry.value.isEmpty) {
continue;
} }
if (password == null) {
password = await promptPassword();
if (password == null) {
throw NullPasswordException();
}
}
settings[entry.key] = encryptValue(entry.value, password!);
continue;
} }
settings[entry.key] = encryptValue(entry.value, password); if (entry.value is String) {
continue; continue;
}
settings[entry.key] = entry.value.toString();
} }
if (entry.value is String) { return settings;
continue;
}
settings[entry.key] = entry.value.toString();
} }
return settings; return await convert(settings);
} }
String encryptValue(String value, String password) { String encryptValue(String value, String password) {