From ca4334d29ff49c0e8962ea775135b2d09351a4af Mon Sep 17 00:00:00 2001 From: Iván Ávalos Date: Sun, 25 Feb 2024 14:27:51 -0600 Subject: [wallet] Prevent UI state from reacting before clearDb response bug 0008455 --- wallet/src/main/java/net/taler/wallet/MainViewModel.kt | 3 --- .../java/net/taler/wallet/settings/SettingsFragment.kt | 4 +++- .../java/net/taler/wallet/settings/SettingsManager.kt | 16 ++++++++++++++++ 3 files changed, 19 insertions(+), 4 deletions(-) (limited to 'wallet/src/main/java') diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt index c28c027..b58636e 100644 --- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt +++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt @@ -155,9 +155,6 @@ class MainViewModel( @UiThread fun dangerouslyReset() { - viewModelScope.launch { - api.sendRequest("clearDb") - } withdrawManager.testWithdrawalStatus.value = null balanceManager.resetBalances() } diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt index fcf34f5..a9881bf 100644 --- a/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/settings/SettingsFragment.kt @@ -167,7 +167,9 @@ class SettingsFragment : PreferenceFragmentCompat() { MaterialAlertDialogBuilder(requireContext(), R.style.MaterialAlertDialog_Material3) .setMessage(R.string.settings_dialog_reset_message) .setNegativeButton(R.string.reset) { _, _ -> - model.dangerouslyReset() + settingsManager.clearDb { + model.dangerouslyReset() + } Snackbar.make(requireView(), getString(R.string.settings_alert_reset_done), LENGTH_SHORT).show() } .setPositiveButton(R.string.cancel) { _, _ -> diff --git a/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt b/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt index 0b4cbe9..8331d59 100644 --- a/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt +++ b/wallet/src/main/java/net/taler/wallet/settings/SettingsManager.kt @@ -144,6 +144,18 @@ class SettingsManager( } } + fun clearDb(onSuccess: () -> Unit) { + scope.launch { + when (val response = api.rawRequest("clearDb")) { + is Success -> onSuccess() + is Error -> { + Log.e(SettingsManager::class.simpleName, "Error cleaning db: ${response.error}") + onDbClearError() + } + } + } + } + private fun onDbExportError() { Toast.makeText(context, R.string.settings_db_export_error, LENGTH_LONG).show() } @@ -152,4 +164,8 @@ class SettingsManager( Toast.makeText(context, R.string.settings_db_import_error, LENGTH_LONG).show() } + private fun onDbClearError() { + Toast.makeText(context, R.string.settings_db_clear_error, LENGTH_LONG).show() + } + } -- cgit v1.2.3