fix passphrase->deletion ui flow for secret keys, and disregard cache

This commit is contained in:
Vincent Breitmoser
2015-07-07 19:54:30 +02:00
parent e780d8270f
commit a91fc1c0c9

View File

@@ -31,6 +31,7 @@ import android.os.AsyncTask;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Handler.Callback;
import android.os.Message; import android.os.Message;
import android.os.Messenger; import android.os.Messenger;
import android.provider.ContactsContract; import android.provider.ContactsContract;
@@ -327,31 +328,11 @@ public class ViewKeyActivity extends BaseNfcActivity implements
return true; return true;
} }
case R.id.menu_key_view_export_file: { case R.id.menu_key_view_export_file: {
try { startPassphraseActivity(REQUEST_EXPORT);
if (PassphraseCacheService.getCachedPassphrase(this, mMasterKeyId, mMasterKeyId) != null) {
exportToFile(mDataUri, mProviderHelper);
return true;
}
startPassphraseActivity(REQUEST_EXPORT);
} catch (PassphraseCacheService.KeyNotFoundException e) {
// This happens when the master key is stripped
exportToFile(mDataUri, mProviderHelper);
}
return true; return true;
} }
case R.id.menu_key_view_delete: { case R.id.menu_key_view_delete: {
try { startPassphraseActivity(REQUEST_DELETE);
if (PassphraseCacheService.getCachedPassphrase(this, mMasterKeyId, mMasterKeyId) != null) {
deleteKey();
return true;
}
startPassphraseActivity(REQUEST_DELETE);
} catch (PassphraseCacheService.KeyNotFoundException e) {
// This happens when the master key is stripped
deleteKey();
}
return true; return true;
} }
case R.id.menu_key_view_advanced: { case R.id.menu_key_view_advanced: {
@@ -476,22 +457,27 @@ public class ViewKeyActivity extends BaseNfcActivity implements
} }
private void deleteKey() { private void deleteKey() {
// Message is received after key is deleted new Handler().post(new Runnable() {
Handler returnHandler = new Handler() { @Override
@Override public void run() {
public void handleMessage(Message message) { // Message is received after key is deleted
if (message.arg1 == MessageStatus.OKAY.ordinal()) { Handler returnHandler = new Handler() {
setResult(RESULT_CANCELED); @Override
finish(); public void handleMessage(Message message) {
} if (message.arg1 == MessageStatus.OKAY.ordinal()) {
} setResult(RESULT_CANCELED);
}; finish();
}
}
};
// Create a new Messenger for the communication back // Create a new Messenger for the communication back
Messenger messenger = new Messenger(returnHandler); Messenger messenger = new Messenger(returnHandler);
DeleteKeyDialogFragment deleteKeyDialog = DeleteKeyDialogFragment.newInstance(messenger, DeleteKeyDialogFragment deleteKeyDialog = DeleteKeyDialogFragment.newInstance(messenger,
new long[]{mMasterKeyId}); new long[]{ mMasterKeyId });
deleteKeyDialog.show(getSupportFragmentManager(), "deleteKeyDialog"); deleteKeyDialog.show(getSupportFragmentManager(), "deleteKeyDialog");
}
});
} }
@Override @Override