diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/ImportExportSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/ImportExportSettingsScreen.kt index 84a96694..a1b01667 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/ImportExportSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/ImportExportSettingsScreen.kt @@ -37,6 +37,7 @@ import app.revanced.manager.ui.component.bundle.BundleSelector import app.revanced.manager.ui.component.settings.SettingsListItem import app.revanced.manager.ui.viewmodel.ImportExportViewModel import app.revanced.manager.util.toast +import app.revanced.manager.util.uiSafe import kotlinx.coroutines.launch import org.koin.androidx.compose.koinViewModel @@ -86,8 +87,10 @@ fun ImportExportSettingsScreen( onDismissRequest = vm::cancelKeystoreImport, onSubmit = { cn, pass -> vm.viewModelScope.launch { - val result = vm.tryKeystoreImport(cn, pass) - if (!result) context.toast(context.getString(R.string.import_keystore_wrong_credentials)) + uiSafe(context, R.string.failed_to_import_keystore, "Failed to import keystore") { + val result = vm.tryKeystoreImport(cn, pass) + if (!result) context.toast(context.getString(R.string.import_keystore_wrong_credentials)) + } } } ) diff --git a/app/src/main/java/app/revanced/manager/ui/viewmodel/ImportExportViewModel.kt b/app/src/main/java/app/revanced/manager/ui/viewmodel/ImportExportViewModel.kt index 9bf08562..6fa042b7 100644 --- a/app/src/main/java/app/revanced/manager/ui/viewmodel/ImportExportViewModel.kt +++ b/app/src/main/java/app/revanced/manager/ui/viewmodel/ImportExportViewModel.kt @@ -69,25 +69,27 @@ class ImportExportViewModel( } fun startKeystoreImport(content: Uri) = viewModelScope.launch { - val path = withContext(Dispatchers.IO) { - File.createTempFile("signing", "ks", app.cacheDir).toPath().also { - Files.copy( - contentResolver.openInputStream(content)!!, - it, - StandardCopyOption.REPLACE_EXISTING - ) - } - } - - aliases.forEach { alias -> - knownPasswords.forEach { pass -> - if (tryKeystoreImport(alias, pass, path)) { - return@launch + uiSafe(app, R.string.failed_to_import_keystore, "Failed to import keystore") { + val path = withContext(Dispatchers.IO) { + File.createTempFile("signing", "ks", app.cacheDir).toPath().also { + Files.copy( + contentResolver.openInputStream(content)!!, + it, + StandardCopyOption.REPLACE_EXISTING + ) } } - } - keystoreImportPath = path + aliases.forEach { alias -> + knownPasswords.forEach { pass -> + if (tryKeystoreImport(alias, pass, path)) { + return@launch + } + } + } + + keystoreImportPath = path + } } fun cancelKeystoreImport() { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 025b1973..7a54b8d0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -419,4 +419,5 @@ Never show again Show update message on launch Shows a popup notification whenever there is a new update available on launch. + Failed to import keystore