diff --git a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java b/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java index b982e1be8..d8246a6af 100644 --- a/src/conversations/java/eu/siacs/conversations/services/ImportBackupService.java +++ b/src/conversations/java/eu/siacs/conversations/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/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java b/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java index bca907b33..d6dbfd222 100644 --- a/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java +++ b/src/conversations/java/eu/siacs/conversations/ui/ImportBackupActivity.java @@ -2,6 +2,7 @@ package eu.siacs.conversations.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; @@ -140,23 +141,32 @@ public class ImportBackupActivity extends ActionBarActivity implements ServiceCo 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) { diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 08f9b02e0..8a8d31757 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -874,4 +874,5 @@ Open backup The file you selected is not a Conversations backup file This account has already been setup + Please enter the password for this account