introduce QueueingCryptoOperationFragment to queue result handling in detached state
This commit is contained in:
@@ -324,11 +324,15 @@ public class CertifyKeyFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCryptoOperationSuccess(CertifyResult result) {
|
public void onQueuedOperationSuccess(CertifyResult result) {
|
||||||
|
// protected by Queueing*Fragment
|
||||||
|
Activity activity = getActivity();
|
||||||
|
|
||||||
Intent intent = new Intent();
|
Intent intent = new Intent();
|
||||||
intent.putExtra(CertifyResult.EXTRA_RESULT, result);
|
intent.putExtra(CertifyResult.EXTRA_RESULT, result);
|
||||||
getActivity().setResult(Activity.RESULT_OK, intent);
|
activity.setResult(Activity.RESULT_OK, intent);
|
||||||
getActivity().finish();
|
activity.finish();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -387,13 +387,10 @@ public class EncryptFilesFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCryptoOperationSuccess(final SignEncryptResult result) {
|
public void onQueuedOperationSuccess(final SignEncryptResult result) {
|
||||||
|
|
||||||
|
// protected by Queueing*Fragment
|
||||||
FragmentActivity activity = getActivity();
|
FragmentActivity activity = getActivity();
|
||||||
if (activity == null) {
|
|
||||||
// it's gone, there's nothing we can do here
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (mDeleteAfterEncrypt) {
|
if (mDeleteAfterEncrypt) {
|
||||||
// TODO make behavior coherent here
|
// TODO make behavior coherent here
|
||||||
|
|||||||
@@ -331,7 +331,7 @@ public class EncryptTextFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCryptoOperationSuccess(SignEncryptResult result) {
|
public void onQueuedOperationSuccess(SignEncryptResult result) {
|
||||||
|
|
||||||
if (mShareAfterEncrypt) {
|
if (mShareAfterEncrypt) {
|
||||||
// Share encrypted message/file
|
// Share encrypted message/file
|
||||||
|
|||||||
@@ -4,12 +4,11 @@ package org.sufficientlysecure.keychain.ui.base;
|
|||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Parcelable;
|
import android.os.Parcelable;
|
||||||
|
|
||||||
import org.sufficientlysecure.keychain.R;
|
|
||||||
import org.sufficientlysecure.keychain.operations.results.OperationResult;
|
import org.sufficientlysecure.keychain.operations.results.OperationResult;
|
||||||
|
|
||||||
|
|
||||||
public abstract class CachingCryptoOperationFragment <T extends Parcelable, S extends OperationResult>
|
public abstract class CachingCryptoOperationFragment <T extends Parcelable, S extends OperationResult>
|
||||||
extends CryptoOperationFragment<T, S> {
|
extends QueueingCryptoOperationFragment<T, S> {
|
||||||
|
|
||||||
public static final String ARG_CACHED_ACTIONS = "cached_actions";
|
public static final String ARG_CACHED_ACTIONS = "cached_actions";
|
||||||
|
|
||||||
@@ -32,12 +31,14 @@ public abstract class CachingCryptoOperationFragment <T extends Parcelable, S ex
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCryptoOperationSuccess(S result) {
|
public void onQueuedOperationSuccess(S result) {
|
||||||
|
super.onCryptoOperationSuccess(result);
|
||||||
mCachedActionsParcel = null;
|
mCachedActionsParcel = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCryptoOperationError(S result) {
|
public void onQueuedOperationError(S result) {
|
||||||
|
super.onCryptoOperationError(result);
|
||||||
mCachedActionsParcel = null;
|
mCachedActionsParcel = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,72 @@
|
|||||||
|
package org.sufficientlysecure.keychain.ui.base;
|
||||||
|
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
|
||||||
|
import org.sufficientlysecure.keychain.operations.results.OperationResult;
|
||||||
|
|
||||||
|
|
||||||
|
public abstract class QueueingCryptoOperationFragment<T extends Parcelable, S extends OperationResult>
|
||||||
|
extends CryptoOperationFragment<T,S> {
|
||||||
|
|
||||||
|
public static final String ARG_QUEUED_RESULT = "queued_result";
|
||||||
|
private S mQueuedResult;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
|
if (mQueuedResult != null) {
|
||||||
|
try {
|
||||||
|
if (mQueuedResult.success()) {
|
||||||
|
onQueuedOperationSuccess(mQueuedResult);
|
||||||
|
} else {
|
||||||
|
onQueuedOperationError(mQueuedResult);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
mQueuedResult = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onSaveInstanceState(Bundle outState) {
|
||||||
|
super.onSaveInstanceState(outState);
|
||||||
|
|
||||||
|
outState.putParcelable(ARG_QUEUED_RESULT, mQueuedResult);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
if (savedInstanceState != null) {
|
||||||
|
mQueuedResult = savedInstanceState.getParcelable(ARG_QUEUED_RESULT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract void onQueuedOperationSuccess(S result);
|
||||||
|
|
||||||
|
public void onQueuedOperationError(S result) {
|
||||||
|
super.onCryptoOperationError(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
final public void onCryptoOperationSuccess(S result) {
|
||||||
|
if (getActivity() == null) {
|
||||||
|
mQueuedResult = result;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
onQueuedOperationSuccess(result);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
final public void onCryptoOperationError(S result) {
|
||||||
|
if (getActivity() == null) {
|
||||||
|
mQueuedResult = result;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
onQueuedOperationError(result);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user