added retry on upload failure

This commit is contained in:
Adithya Abraham Philip
2015-07-10 05:21:56 +05:30
parent cdd9de99bf
commit 2827b1af16
9 changed files with 121 additions and 6 deletions

View File

@@ -0,0 +1,68 @@
package org.sufficientlysecure.keychain.ui;
import android.app.Dialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v4.app.FragmentActivity;
import android.view.ContextThemeWrapper;
import org.sufficientlysecure.keychain.R;
import org.sufficientlysecure.keychain.ui.dialog.CustomAlertDialogBuilder;
public class UploadRetryDialogActivity extends FragmentActivity {
public static final String EXTRA_CRYPTO_INPUT = "extra_crypto_input";
public static final String RESULT_CRYPTO_INPUT = "result_crypto_input";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
UploadRetryDialogFragment.newInstance().show(getSupportFragmentManager(),
"uploadRetryDialog");
}
public static class UploadRetryDialogFragment extends DialogFragment {
public static UploadRetryDialogFragment newInstance() {
return new UploadRetryDialogFragment();
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
ContextThemeWrapper theme = new ContextThemeWrapper(getActivity(),
R.style.Theme_AppCompat_Light_Dialog);
CustomAlertDialogBuilder dialogBuilder = new CustomAlertDialogBuilder(theme);
dialogBuilder.setTitle(R.string.retry_up_dialog_title);
dialogBuilder.setMessage(R.string.retry_up_dialog_message);
dialogBuilder.setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getActivity().setResult(RESULT_CANCELED);
getActivity().finish();
}
});
dialogBuilder.setPositiveButton(R.string.retry_up_dialog_btn_reupload,
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Intent intent = new Intent();
intent.putExtra(RESULT_CRYPTO_INPUT, getActivity()
.getIntent().getParcelableExtra(EXTRA_CRYPTO_INPUT));
getActivity().setResult(RESULT_OK, intent);
getActivity().finish();
}
});
return dialogBuilder.show();
}
}
}

View File

@@ -40,6 +40,7 @@ import org.sufficientlysecure.keychain.service.input.RequiredInputParcel;
import org.sufficientlysecure.keychain.ui.NfcOperationActivity;
import org.sufficientlysecure.keychain.ui.OrbotRequiredDialogActivity;
import org.sufficientlysecure.keychain.ui.PassphraseDialogActivity;
import org.sufficientlysecure.keychain.ui.UploadRetryDialogActivity;
import org.sufficientlysecure.keychain.ui.dialog.ProgressDialogFragment;
import org.sufficientlysecure.keychain.util.Log;
@@ -76,6 +77,7 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
public static final int REQUEST_CODE_PASSPHRASE = 1;
public static final int REQUEST_CODE_NFC = 2;
public static final int REQUEST_CODE_ENABLE_ORBOT = 3;
public static final int REQUEST_CODE_RETRY_UPLOAD = 4;
private Integer mProgressMessageResource;
@@ -145,6 +147,13 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
return;
}
case UPLOAD_FAIL_RETRY: {
Intent intent = new Intent(activity, UploadRetryDialogActivity.class);
intent.putExtra(UploadRetryDialogActivity.EXTRA_CRYPTO_INPUT, cryptoInputParcel);
startActivityForResult(intent, REQUEST_CODE_RETRY_UPLOAD);
return;
}
default: {
throw new RuntimeException("Unhandled pending result!");
}
@@ -186,7 +195,6 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
CryptoInputParcel cryptoInput =
data.getParcelableExtra(PassphraseDialogActivity.RESULT_CRYPTO_INPUT);
cryptoOperation(cryptoInput);
return true;
}
break;
}
@@ -196,7 +204,6 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
CryptoInputParcel cryptoInput =
data.getParcelableExtra(NfcOperationActivity.RESULT_DATA);
cryptoOperation(cryptoInput);
return true;
}
break;
}
@@ -207,12 +214,22 @@ public class CryptoOperationHelper<T extends Parcelable, S extends OperationResu
data.getParcelableExtra(
OrbotRequiredDialogActivity.RESULT_CRYPTO_INPUT);
cryptoOperation(cryptoInput);
return true;
}
break;
}
case REQUEST_CODE_RETRY_UPLOAD: {
if (resultCode == Activity.RESULT_OK) {
CryptoInputParcel cryptoInput =
data.getParcelableExtra(
UploadRetryDialogActivity.RESULT_CRYPTO_INPUT);
cryptoOperation(cryptoInput);
}
break;
}
}
return false;
return true;
}
protected void dismissProgress() {