aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-08-31 14:52:57 +0200
committerChristian Schneppe <christian@pix-art.de>2019-08-31 14:52:57 +0200
commit8b63dbb26d5f5d81ad631c6cb8629cb5637df0ea (patch)
tree12616e01c88ed7ebce05839c97cc9362058e1f20
parent94143682ffd20c41ebc607228716fc184d558a16 (diff)
do password empty check in dialog not in restore backup service
-rw-r--r--src/main/java/de/pixart/messenger/services/ImportBackupService.java10
-rw-r--r--src/main/java/de/pixart/messenger/ui/ImportBackupActivity.java42
-rw-r--r--src/main/res/values/strings.xml1
3 files changed, 28 insertions, 25 deletions
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) {
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index d29ff110b..1a8cb52a8 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -930,4 +930,5 @@
<string name="open_backup">Open backup</string>
<string name="not_a_backup_file">The file you selected is not a Conversations backup file</string>
<string name="account_already_setup">This account has already been setup</string>
+ <string name="please_enter_password">Please enter the password for this account</string>
</resources>