do password empty check in dialog not in restore backup service

This commit is contained in:
Daniel Gultsch 2019-07-17 17:21:18 +02:00
parent cb1feab350
commit d9f39df9c8
3 changed files with 28 additions and 25 deletions

View File

@ -93,7 +93,7 @@ public class ImportBackupService extends Service {
uri = data; uri = data;
} }
if (password == null || uri == null) { if (password == null || password.isEmpty() || uri == null) {
return START_NOT_STICKY; return START_NOT_STICKY;
} }
if (running.compareAndSet(false, true)) { if (running.compareAndSet(false, true)) {
@ -158,14 +158,6 @@ public class ImportBackupService extends Service {
private boolean importBackup(Uri uri, String password) { private boolean importBackup(Uri uri, String password) {
Log.d(Config.LOGTAG, "importing backup from " + uri); Log.d(Config.LOGTAG, "importing backup from " + uri);
if (password == null || password.isEmpty()) {
synchronized (mOnBackupProcessedListeners) {
for (OnBackupProcessed l : mOnBackupProcessedListeners) {
l.onBackupDecryptionFailed();
}
}
return false;
}
try { try {
SQLiteDatabase db = mDatabaseBackend.getWritableDatabase(); SQLiteDatabase db = mDatabaseBackend.getWritableDatabase();
final InputStream inputStream; final InputStream inputStream;

View File

@ -2,6 +2,7 @@ package eu.siacs.conversations.ui;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.content.ServiceConnection; import android.content.ServiceConnection;
import android.databinding.DataBindingUtil; import android.databinding.DataBindingUtil;
@ -140,23 +141,32 @@ public class ImportBackupActivity extends ActionBarActivity implements ServiceCo
finish(); finish();
} }
}); });
builder.setPositiveButton(R.string.restore, (dialog, which) -> { builder.setPositiveButton(R.string.restore, null);
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.setCancelable(false); 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) { private void setLoadingState(final boolean loadingState) {

View File

@ -874,4 +874,5 @@
<string name="open_backup">Open backup</string> <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="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="account_already_setup">This account has already been setup</string>
<string name="please_enter_password">Please enter the password for this account</string>
</resources> </resources>