From bdbc377c8fe99e529e1f6e71f9fb0f6599abd475 Mon Sep 17 00:00:00 2001 From: ameba23 Date: Mon, 19 Apr 2021 10:07:06 +0200 Subject: [PATCH] Fix UI around receiving multiple returned shards --- .../recover/OwnerReturnShardActivity.java | 17 ++++++----------- .../recover/OwnerReturnShardViewModel.java | 8 +++++--- .../recovery/SecretOwnerTaskImpl.java | 7 +++++++ 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/OwnerReturnShardActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/OwnerReturnShardActivity.java index feb0c804e..b736958bd 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/OwnerReturnShardActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/socialbackup/recover/OwnerReturnShardActivity.java @@ -104,15 +104,7 @@ public class OwnerReturnShardActivity extends BaseActivity @Override public void onBackPressed() { // TODO should we cancel the return shard task here? - if (viewModel.getState() - .getValue() instanceof SecretOwnerTask.State.Failure) { - // re-create this activity when going back in failed state - Intent i = new Intent(this, OwnerReturnShardActivity.class); - i.setFlags(FLAG_ACTIVITY_CLEAR_TOP); - startActivity(i); - } else { - super.onBackPressed(); - } + super.onBackPressed(); } private void showQrCodeFragment() { @@ -136,10 +128,13 @@ public class OwnerReturnShardActivity extends BaseActivity "Success - got shard" + (added ? "" : " duplicate"), Toast.LENGTH_SHORT).show(); if (added && viewModel.canRecover()) { - + Toast.makeText(this, + "Secret key recovered!", + Toast.LENGTH_LONG).show(); + finish(); + return; } onBackPressed(); -// finish(); } else if (state instanceof SecretOwnerTask.State.Failure) { // TODO error screen, handle reason Toast.makeText(this, 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 02911e851..8e950fe17 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 @@ -137,8 +137,6 @@ class OwnerReturnShardViewModel extends AndroidViewModel @UiThread public void startListening() { ioExecutor.execute(() -> { - task.cancel(); - // wait until really cancelled task.start(this, getWifiIpv4Address()); }); // KeyAgreementTask oldTask = task; @@ -208,8 +206,12 @@ class OwnerReturnShardViewModel extends AndroidViewModel // Use ISO 8859-1 to encode bytes directly as a string String content = new String(payloadBytes, ISO_8859_1); qrCodeBitmap = QrCodeUtils.createQrCode(dm, content); - this.state.postValue(state); + this.state.postValue(state); }); + } else if (state instanceof SecretOwnerTask.State.Success) { +// startClicked.setEvent(true); + this.state.postValue(state); + // TODO do same for failure } else { this.state.postValue(state); } diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/SecretOwnerTaskImpl.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/SecretOwnerTaskImpl.java index bdc43c450..623f4dab2 100644 --- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/SecretOwnerTaskImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/recovery/SecretOwnerTaskImpl.java @@ -62,6 +62,13 @@ public class SecretOwnerTaskImpl extends ReturnShardTaskImpl LOG.info("InetAddress is " + inetAddress); socketAddress = new InetSocketAddress(inetAddress, PORT); + // If we have a socket already open, close it and start fresh + if (serverSocket != null) { + try { + serverSocket.close(); + } catch (IOException ignored) {} + } + // Start listening on socketAddress try { LOG.info("Binding socket");