From 8b63dbb26d5f5d81ad631c6cb8629cb5637df0ea Mon Sep 17 00:00:00 2001 From: Christian Schneppe Date: Sat, 31 Aug 2019 14:52:57 +0200 Subject: do password empty check in dialog not in restore backup service --- .../messenger/services/ImportBackupService.java | 10 +----- .../pixart/messenger/ui/ImportBackupActivity.java | 42 +++++++++++++--------- 2 files changed, 27 insertions(+), 25 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/de/pixart/messenger/services/ImportBackupService.java b/src/main/java/de/pixart/messenger/services/ImportBackupService.java index 8bb912b8b..fe1fd414b 100644 --- a/src/main/java/de/pixart/messenger/services/ImportBackupService.java +++ b/src/main/java/de/pixart/messenger/services/ImportBackupService.java @@ -93,7 +93,7 @@ public class ImportBackupService extends Service { uri = data; } - if (password == null || uri == null) { + if (password == null || password.isEmpty() || uri == null) { return START_NOT_STICKY; } if (running.compareAndSet(false, true)) { @@ -158,14 +158,6 @@ public class ImportBackupService extends Service { private boolean importBackup(Uri uri, String password) { Log.d(Config.LOGTAG, "importing backup from " + uri); - if (password == null || password.isEmpty()) { - synchronized (mOnBackupProcessedListeners) { - for (OnBackupProcessed l : mOnBackupProcessedListeners) { - l.onBackupDecryptionFailed(); - } - } - return false; - } try { SQLiteDatabase db = mDatabaseBackend.getWritableDatabase(); final InputStream inputStream; diff --git a/src/main/java/de/pixart/messenger/ui/ImportBackupActivity.java b/src/main/java/de/pixart/messenger/ui/ImportBackupActivity.java index ffcbbb0bb..3b7744088 100644 --- a/src/main/java/de/pixart/messenger/ui/ImportBackupActivity.java +++ b/src/main/java/de/pixart/messenger/ui/ImportBackupActivity.java @@ -2,6 +2,7 @@ package de.pixart.messenger.ui; import android.content.ComponentName; import android.content.Context; +import android.content.DialogInterface; import android.content.Intent; import android.content.ServiceConnection; import android.databinding.DataBindingUtil; @@ -153,23 +154,32 @@ public class ImportBackupActivity extends XmppActivity implements ServiceConnect finish(); } }); - builder.setPositiveButton(R.string.restore, (dialog, which) -> { - final String password = enterPasswordBinding.accountPassword.getEditableText().toString(); - final Uri uri = backupFile.getUri(); - Intent intent = new Intent(this, ImportBackupService.class); - intent.setAction(Intent.ACTION_SEND); - intent.putExtra("password", password); - if ("file".equals(uri.getScheme())) { - intent.putExtra("file", uri.getPath()); - } else { - intent.setData(uri); - intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); - } - setLoadingState(true); - ContextCompat.startForegroundService(this, intent); - }); + builder.setPositiveButton(R.string.restore, null); builder.setCancelable(false); - builder.create().show(); + final AlertDialog dialog = builder.create(); + dialog.setOnShowListener((d) -> { + dialog.getButton(DialogInterface.BUTTON_POSITIVE).setOnClickListener(v -> { + final String password = enterPasswordBinding.accountPassword.getEditableText().toString(); + if (password.isEmpty()) { + enterPasswordBinding.accountPasswordLayout.setError(getString(R.string.please_enter_password)); + return; + } + final Uri uri = backupFile.getUri(); + Intent intent = new Intent(this, ImportBackupService.class); + intent.setAction(Intent.ACTION_SEND); + intent.putExtra("password", password); + if ("file".equals(uri.getScheme())) { + intent.putExtra("file", uri.getPath()); + } else { + intent.setData(uri); + intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); + } + setLoadingState(true); + ContextCompat.startForegroundService(this, intent); + d.dismiss(); + }); + }); + dialog.show(); } private void setLoadingState(final boolean loadingState) { -- cgit v1.2.3