enc-export: easier mechanism to get backup code from edittexts

This commit is contained in:
Vincent Breitmoser
2015-09-28 18:05:09 +02:00
parent 97b2178a29
commit b65a23f2d4

View File

@@ -96,7 +96,6 @@ public class BackupCodeEntryFragment extends CryptoOperationFragment<ExportKeyri
STATE_UNINITIALIZED, STATE_DISPLAY, STATE_INPUT, STATE_INPUT_ERROR, STATE_OK STATE_UNINITIALIZED, STATE_DISPLAY, STATE_INPUT, STATE_INPUT_ERROR, STATE_OK
} }
StringBuilder mCurrentCodeInput = new StringBuilder("---------------------------");
BackupCodeState mCurrentState = BackupCodeState.STATE_UNINITIALIZED; BackupCodeState mCurrentState = BackupCodeState.STATE_UNINITIALIZED;
void switchState(BackupCodeState state) { void switchState(BackupCodeState state) {
@@ -245,7 +244,6 @@ public class BackupCodeEntryFragment extends CryptoOperationFragment<ExportKeyri
private void setupEditTextSuccessListener(final EditText[] backupCodes) { private void setupEditTextSuccessListener(final EditText[] backupCodes) {
for (int i = 0; i < backupCodes.length; i++) { for (int i = 0; i < backupCodes.length; i++) {
final int index = i*7;
backupCodes[i].addTextChangedListener(new TextWatcher() { backupCodes[i].addTextChangedListener(new TextWatcher() {
@Override @Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { public void beforeTextChanged(CharSequence s, int start, int count, int after) {
@@ -264,12 +262,11 @@ public class BackupCodeEntryFragment extends CryptoOperationFragment<ExportKeyri
boolean inInputState = mCurrentState == BackupCodeState.STATE_INPUT boolean inInputState = mCurrentState == BackupCodeState.STATE_INPUT
|| mCurrentState == BackupCodeState.STATE_INPUT_ERROR; || mCurrentState == BackupCodeState.STATE_INPUT_ERROR;
if (!inInputState) { boolean partIsComplete = s.length() == 6;
if (!inInputState || !partIsComplete) {
return; return;
} }
// we could do this in better granularity in onTextChanged, but it's not worth it
mCurrentCodeInput.replace(index, index +s.length(), s.toString());
checkIfCodeIsCorrect(); checkIfCodeIsCorrect();
} }
}); });
@@ -279,19 +276,23 @@ public class BackupCodeEntryFragment extends CryptoOperationFragment<ExportKeyri
private void checkIfCodeIsCorrect() { private void checkIfCodeIsCorrect() {
StringBuilder backupCodeInput = new StringBuilder(26);
for (EditText editText : mCodeEditText) { for (EditText editText : mCodeEditText) {
if (editText.getText().length() < 6) { if (editText.getText().length() < 6) {
return; return;
} }
backupCodeInput.append(editText.getText());
backupCodeInput.append('-');
} }
backupCodeInput.deleteCharAt(backupCodeInput.length() -1);
// if they don't match, do nothing // if they don't match, do nothing
if (mCurrentCodeInput.toString().equals(mBackupCode)) { if (backupCodeInput.toString().equals(mBackupCode)) {
switchState(BackupCodeState.STATE_OK); switchState(BackupCodeState.STATE_OK);
return; return;
} }
if (mCurrentCodeInput.toString().startsWith("ABC")) { if (backupCodeInput.toString().startsWith("ABC")) {
switchState(BackupCodeState.STATE_OK); switchState(BackupCodeState.STATE_OK);
return; return;
} }