diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java index 94cf279bf..b111efa5b 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/operations/DeleteOperation.java @@ -52,8 +52,8 @@ public class DeleteOperation extends BaseReadWriteOperation public OperationResult execute(DeleteKeyringParcel deleteKeyringParcel, CryptoInputParcel cryptoInputParcel) { - long[] masterKeyIds = deleteKeyringParcel.mMasterKeyIds; - boolean isSecret = deleteKeyringParcel.mIsSecret; + long[] masterKeyIds = deleteKeyringParcel.getMasterKeyIds(); + boolean isSecret = deleteKeyringParcel.isDeleteSecret(); return onlyDeleteKey(masterKeyIds, isSecret); } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/DeleteKeyringParcel.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/DeleteKeyringParcel.java index b412a6e2b..ebc37bbc8 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/DeleteKeyringParcel.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/service/DeleteKeyringParcel.java @@ -19,45 +19,24 @@ package org.sufficientlysecure.keychain.service; -import android.os.Parcel; + import android.os.Parcelable; -public class DeleteKeyringParcel implements Parcelable { +import com.google.auto.value.AutoValue; - public long[] mMasterKeyIds; - public boolean mIsSecret; - public DeleteKeyringParcel(long[] masterKeyIds, boolean isSecret) { - mMasterKeyIds = masterKeyIds; - mIsSecret = isSecret; +@AutoValue +public abstract class DeleteKeyringParcel implements Parcelable { + public abstract long[] getMasterKeyIds(); + public abstract boolean isDeleteSecret(); + + + public static DeleteKeyringParcel createDeletePublicKeysParcel(long[] masterKeyIds) { + return new AutoValue_DeleteKeyringParcel(masterKeyIds, false); } - protected DeleteKeyringParcel(Parcel in) { - mIsSecret = in.readByte() != 0x00; - mMasterKeyIds = in.createLongArray(); + public static DeleteKeyringParcel createDeleteSingleSecretKeyParcel(long masterKeyId) { + return new AutoValue_DeleteKeyringParcel(new long[] { masterKeyId }, true); } - - @Override - public int describeContents() { - return 0; - } - - @Override - public void writeToParcel(Parcel dest, int flags) { - dest.writeByte((byte) (mIsSecret ? 0x01 : 0x00)); - dest.writeLongArray(mMasterKeyIds); - } - - public static final Parcelable.Creator CREATOR = new Parcelable.Creator() { - @Override - public DeleteKeyringParcel createFromParcel(Parcel in) { - return new DeleteKeyringParcel(in); - } - - @Override - public DeleteKeyringParcel[] newArray(int size) { - return new DeleteKeyringParcel[size]; - } - }; } diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DeleteKeyDialogActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DeleteKeyDialogActivity.java index 6ae40e880..a6b4db1af 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DeleteKeyDialogActivity.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/DeleteKeyDialogActivity.java @@ -183,9 +183,12 @@ public class DeleteKeyDialogActivity extends FragmentActivity { return new CryptoOperationHelper.Callback() { @Override public DeleteKeyringParcel createOperationInput() { - return new DeleteKeyringParcel(mMasterKeyIds, mHasSecret); + if (mHasSecret) { + return DeleteKeyringParcel.createDeleteSingleSecretKeyParcel(mMasterKeyIds[0]); + } else { + return DeleteKeyringParcel.createDeletePublicKeysParcel(mMasterKeyIds); + } } - @Override public void onCryptoOperationSuccess(DeleteResult result) { returnResult(result);