diff --git a/app/src/main/java/app/revanced/manager/domain/manager/KeystoreManager.kt b/app/src/main/java/app/revanced/manager/domain/manager/KeystoreManager.kt
index bba8035f..c1c4700d 100644
--- a/app/src/main/java/app/revanced/manager/domain/manager/KeystoreManager.kt
+++ b/app/src/main/java/app/revanced/manager/domain/manager/KeystoreManager.kt
@@ -49,15 +49,17 @@ class KeystoreManager(app: Application, private val prefs: PreferencesManager) {
)
)
)
- keystorePath.outputStream().use {
- ks.store(it, null)
+ withContext(Dispatchers.IO) {
+ keystorePath.outputStream().use {
+ ks.store(it, null)
+ }
}
updatePrefs(DEFAULT, DEFAULT)
}
suspend fun import(cn: String, pass: String, keystore: InputStream): Boolean {
- val keystoreData = keystore.readBytes()
+ val keystoreData = withContext(Dispatchers.IO) { keystore.readBytes() }
try {
val ks = ApkSigner.readKeyStore(ByteArrayInputStream(keystoreData), null)
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 d568317d..9bf08562 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
@@ -55,14 +55,17 @@ class ImportExportViewModel(
fun resetOptionsForPackage(packageName: String) = viewModelScope.launch {
optionsRepository.clearOptionsForPackage(packageName)
+ app.toast(app.getString(R.string.patch_options_reset_toast))
}
fun clearOptionsForBundle(patchBundle: PatchBundleSource) = viewModelScope.launch {
optionsRepository.clearOptionsForPatchBundle(patchBundle.uid)
+ app.toast(app.getString(R.string.patch_options_reset_toast))
}
fun resetOptions() = viewModelScope.launch {
optionsRepository.reset()
+ app.toast(app.getString(R.string.patch_options_reset_toast))
}
fun startKeystoreImport(content: Uri) = viewModelScope.launch {
@@ -98,6 +101,7 @@ class ImportExportViewModel(
private suspend fun tryKeystoreImport(cn: String, pass: String, path: Path): Boolean {
path.inputStream().use { stream ->
if (keystoreManager.import(cn, pass, stream)) {
+ app.toast(app.getString(R.string.import_keystore_success))
cancelKeystoreImport()
return true
}
@@ -116,6 +120,7 @@ class ImportExportViewModel(
fun exportKeystore(target: Uri) = viewModelScope.launch {
keystoreManager.export(contentResolver.openOutputStream(target)!!)
+ app.toast(app.getString(R.string.export_keystore_success))
}
fun regenerateKeystore() = viewModelScope.launch {
@@ -123,8 +128,9 @@ class ImportExportViewModel(
app.toast(app.getString(R.string.regenerate_keystore_success))
}
- fun resetSelection() = viewModelScope.launch(Dispatchers.Default) {
- selectionRepository.reset()
+ fun resetSelection() = viewModelScope.launch {
+ withContext(Dispatchers.Default) { selectionRepository.reset() }
+ app.toast(app.getString(R.string.reset_patch_selection_success))
}
fun executeSelectionAction(target: Uri) = viewModelScope.launch {
@@ -173,6 +179,7 @@ class ImportExportViewModel(
}
selectionRepository.import(bundleUid, selection)
+ app.toast(app.getString(R.string.import_patch_selection_success))
}
}
@@ -191,6 +198,7 @@ class ImportExportViewModel(
Json.Default.encodeToStream(selection, it)
}
}
+ app.toast(app.getString(R.string.export_patch_selection_success))
}
}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5b833f6a..4fd92ba9 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -81,20 +81,25 @@
Password
Import
Wrong keystore credentials
+ Imported keystore
Export keystore
Export the current keystore
No keystore to export
+ Exported keystore
Regenerate keystore
Generate a new keystore
The keystore has been successfully replaced
Import patch selection
Import patch selection from a JSON file
Could not import patch selection: %s
+ Imported patch selection
Export patch selection
- Export patch selection from a JSON file
+ Export patch selection to a JSON file
Could not export patch selection: %s
+ Exported patch selection
Reset patch selection
Reset the stored patch selection
+ Patch selection has been reset
Reset patch options for app
Resets patch options for a single app
Resets patch options for bundle