aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-07-06 16:21:48 +0200
committerDominik Schürmann <dominik@dominikschuermann.de>2015-07-06 16:21:48 +0200
commit1eb438576d862df8bf8c7221a6bebee7e8dd85f3 (patch)
tree689853089f80748e3861f17379a5fedc7a378bf9 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java
parent0c6ef6aed45130b3958fd351558df52738979dae (diff)
downloadopen-keychain-1eb438576d862df8bf8c7221a6bebee7e8dd85f3.tar.gz
open-keychain-1eb438576d862df8bf8c7221a6bebee7e8dd85f3.tar.bz2
open-keychain-1eb438576d862df8bf8c7221a6bebee7e8dd85f3.zip
Better YubiKey UX flow for error handling
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java29
1 files changed, 22 insertions, 7 deletions
diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java
index cacfd2e52..8802cd621 100644
--- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java
+++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/NfcOperationActivity.java
@@ -9,7 +9,9 @@ package org.sufficientlysecure.keychain.ui;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
+import android.view.View;
import android.view.WindowManager;
+import android.widget.Button;
import android.widget.TextView;
import android.widget.ViewAnimator;
@@ -49,6 +51,7 @@ public class NfcOperationActivity extends BaseNfcActivity {
public ViewAnimator vAnimator;
public TextView vErrorText;
+ public Button vErrorTryAgainButton;
private RequiredInputParcel mRequiredInput;
private Intent mServiceIntent;
@@ -68,7 +71,20 @@ public class NfcOperationActivity extends BaseNfcActivity {
vAnimator = (ViewAnimator) findViewById(R.id.view_animator);
vAnimator.setDisplayedChild(0);
- vErrorText = (TextView) findViewById(R.id.nfc_activity_error_text);
+ vErrorText = (TextView) findViewById(R.id.nfc_activity_3_error_text);
+ vErrorTryAgainButton = (Button) findViewById(R.id.nfc_activity_3_error_try_again);
+ vErrorTryAgainButton.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ resumeTagHandling();
+
+ // obtain passphrase for this subkey
+ if (mRequiredInput.mType != RequiredInputParcel.RequiredInputType.NFC_MOVE_KEY_TO_CARD) {
+ obtainYubiKeyPin(mRequiredInput);
+ }
+ vAnimator.setDisplayedChild(0);
+ }
+ });
Intent intent = getIntent();
Bundle data = intent.getExtras();
@@ -84,7 +100,7 @@ public class NfcOperationActivity extends BaseNfcActivity {
@Override
protected void initLayout() {
- setContentView(R.layout.nfc_activity);
+ setContentView(R.layout.nfc_operation_activity);
}
@Override
@@ -221,8 +237,7 @@ public class NfcOperationActivity extends BaseNfcActivity {
if (isNfcConnected()) {
try {
Thread.sleep(200);
- } catch (InterruptedException e) {
- // never mind
+ } catch (InterruptedException ignored) {
}
} else {
return null;
@@ -239,7 +254,9 @@ public class NfcOperationActivity extends BaseNfcActivity {
@Override
protected void onNfcError(String error) {
- vErrorText.setText(error);
+ pauseTagHandling();
+
+ vErrorText.setText(error + "\n\n" + getString(R.string.nfc_try_again_text));
vAnimator.setDisplayedChild(3);
}
@@ -270,8 +287,6 @@ public class NfcOperationActivity extends BaseNfcActivity {
// clear (invalid) passphrase
PassphraseCacheService.clearCachedPassphrase(
this, mRequiredInput.getMasterKeyId(), mRequiredInput.getSubKeyId());
-
- obtainYubiKeyPin(mRequiredInput);
}
}