From 6a143eea8a7b5aa6a745c2367df1ba830e6e4faa Mon Sep 17 00:00:00 2001 From: ameba23 Date: Tue, 13 Apr 2021 17:37:29 +0200 Subject: [PATCH] Update state in UI for Custodian --- .../recover/CustodianReturnShardActivity.java | 2 ++ .../recover/CustodianReturnShardFragment.java | 14 +++++++++++--- .../recover/CustodianReturnShardViewModel.java | 15 ++++++++++----- .../recover/OwnerReturnShardViewModel.java | 4 +++- 4 files changed, 26 insertions(+), 9 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardActivity.java index 092ee8981..f808a37c3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardActivity.java @@ -64,7 +64,9 @@ public class CustodianReturnShardActivity extends BriarActivity } private void onReturnShardStateChanged(CustodianTask.State state) { + if (state instanceof CustodianTask.State.Success) { + } } private void showCameraFragment() { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardFragment.java index 220eeba31..d893b5b0b 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardFragment.java @@ -141,7 +141,17 @@ public class CustodianReturnShardFragment extends BaseFragment @UiThread private void onReturnShardStateChanged(@Nullable CustodianTask.State state) { - if (state instanceof CustodianTask.State.Connecting) { + LOG.info("State changed"); +// if (state instanceof CustodianTask.State.Connecting) { +// try { +// cameraView.stop(); +// } catch (CameraException e) { +// logCameraExceptionAndFinish(e); +// } +// cameraView.setVisibility(INVISIBLE); +// statusView.setVisibility(VISIBLE); +// status.setText(R.string.connecting_to_device); + if (state instanceof CustodianTask.State.SendingShard) { try { cameraView.stop(); } catch (CameraException e) { @@ -149,8 +159,6 @@ public class CustodianReturnShardFragment extends BaseFragment } cameraView.setVisibility(INVISIBLE); statusView.setVisibility(VISIBLE); - status.setText(R.string.connecting_to_device); - } else if (state instanceof CustodianTask.State.SendingShard) { status.setText("Sending shard"); } else if (state instanceof CustodianTask.State.ReceivingAck) { status.setText("Receiving Ack"); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardViewModel.java index c4a94cf3e..6cb5a01e3 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/CustodianReturnShardViewModel.java @@ -45,6 +45,7 @@ public class CustodianReturnShardViewModel extends AndroidViewModel private final AndroidExecutor androidExecutor; private final Executor ioExecutor; private boolean wasContinueClicked = false; + private boolean qrCodeRead = false; private final MutableLiveEvent showCameraFragment = new MutableLiveEvent<>(); private final MutableLiveData state = @@ -74,18 +75,21 @@ public class CustodianReturnShardViewModel extends AndroidViewModel @Override public void onQrCodeDecoded(Result result) { LOG.info("Got result from decoder"); - // Ignore results until the KeyAgreementTask is ready -// if (!gotLocalPayload || gotRemotePayload) return; + if (qrCodeRead) return; try { byte[] payloadBytes = result.getText().getBytes(ISO_8859_1); if (LOG.isLoggable(INFO)) LOG.info("Remote payload is " + payloadBytes.length + " bytes"); - task.qrCodeDecoded(payloadBytes); + ioExecutor.execute(() -> { + task.qrCodeDecoded(payloadBytes); + }); } catch (IllegalArgumentException e) { LOG.log(WARNING, "QR Code Invalid", e); androidExecutor.runOnUiThread(() -> Toast.makeText(getApplication(), R.string.qr_code_invalid, LENGTH_LONG).show()); - task.qrCodeDecoded(null); + ioExecutor.execute(() -> { + task.qrCodeDecoded(null); + }); } } @@ -110,9 +114,10 @@ public class CustodianReturnShardViewModel extends AndroidViewModel @Override public void onStateChanged(CustodianTask.State state) { + this.state.postValue(state); // Connecting, SendingShard, ReceivingAck, Success, Failure if (state instanceof CustodianTask.State.SendingShard) { - + qrCodeRead = true; } } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/OwnerReturnShardViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/OwnerReturnShardViewModel.java index 31f1dbe42..6d9b4f130 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/OwnerReturnShardViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/OwnerReturnShardViewModel.java @@ -122,7 +122,9 @@ class OwnerReturnShardViewModel extends AndroidViewModel implements SecretOwnerT @UiThread private void startListening() { - task.start(this, getWifiIpv4Address()); + ioExecutor.execute(() -> { + task.start(this, getWifiIpv4Address()); + }); // KeyAgreementTask oldTask = task; // KeyAgreementTask newTask = keyAgreementTaskProvider.get(); // task = newTask;