From f05cbac20a8ae11458c4604a9cb80e12b4d557d0 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Wed, 27 Apr 2022 12:14:26 -0300 Subject: [PATCH] Use a new WasUnpaired state that shows a dialog over a blank fragment --- .../android/mailbox/MailboxActivity.java | 38 ++++++++++++------- .../briar/android/mailbox/MailboxState.java | 17 ++++----- .../android/mailbox/MailboxViewModel.java | 2 +- .../briar/android/view/BlankFragment.java | 12 ++++++ 4 files changed, 46 insertions(+), 23 deletions(-) create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/view/BlankFragment.java diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java index 4f2bd00ea..528de5886 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java @@ -11,6 +11,7 @@ import org.briarproject.briar.R; import org.briarproject.briar.android.activity.ActivityComponent; import org.briarproject.briar.android.activity.BriarActivity; import org.briarproject.briar.android.fragment.FinalFragment; +import org.briarproject.briar.android.view.BlankFragment; import javax.inject.Inject; @@ -54,8 +55,7 @@ public class MailboxActivity extends BriarActivity { viewModel.getPairingState().observeEvent(this, state -> { if (state instanceof MailboxState.NotSetup) { - MailboxState.NotSetup s = (MailboxState.NotSetup) state; - onNotSetup(s.tellUserToWipeMailbox); + onNotSetup(); } else if (state instanceof MailboxState.ShowDownload) { onShowDownload(); } else if (state instanceof MailboxState.ScanningQrCode) { @@ -70,6 +70,9 @@ public class MailboxActivity extends BriarActivity { onCameraError(); } else if (state instanceof MailboxState.IsPaired) { onIsPaired(((MailboxState.IsPaired) state).isOnline); + } else if (state instanceof MailboxState.WasUnpaired) { + MailboxState.WasUnpaired s = (MailboxState.WasUnpaired) state; + onUnPaired(s.tellUserToWipeMailbox); } else { throw new AssertionError("Unknown state: " + state); } @@ -97,17 +100,8 @@ public class MailboxActivity extends BriarActivity { } } - private void onNotSetup(boolean tellUserToWipeMailbox) { + private void onNotSetup() { progressBar.setVisibility(INVISIBLE); - if (tellUserToWipeMailbox) { - AlertDialog.Builder builder = - new AlertDialog.Builder(this, R.style.BriarDialogTheme); - builder.setTitle(R.string.mailbox_status_unlink_no_wipe_title); - builder.setMessage(R.string.mailbox_status_unlink_no_wipe_message); - builder.setNeutralButton(R.string.got_it, - (dialog, which) -> dialog.cancel()); - builder.show(); - } getSupportFragmentManager().beginTransaction() .replace(R.id.fragmentContainer, new SetupIntroFragment(), SetupIntroFragment.TAG) @@ -137,7 +131,7 @@ public class MailboxActivity extends BriarActivity { if (fm.getBackStackEntryCount() == 0) { // We re-launched into an existing state, // need to re-populate the back stack. - onNotSetup(false); + onNotSetup(); onShowDownload(); } Fragment f; @@ -201,4 +195,22 @@ public class MailboxActivity extends BriarActivity { showFragment(getSupportFragmentManager(), f, tag, false); } + private void onUnPaired(boolean tellUserToWipeMailbox) { + if (tellUserToWipeMailbox) { + showFragment(getSupportFragmentManager(), new BlankFragment(), + BlankFragment.TAG); + AlertDialog.Builder builder = + new AlertDialog.Builder(this, R.style.BriarDialogTheme); + builder.setTitle(R.string.mailbox_status_unlink_no_wipe_title); + builder.setMessage(R.string.mailbox_status_unlink_no_wipe_message); + builder.setNeutralButton(R.string.got_it, + (dialog, which) -> dialog.cancel()); + builder.setOnCancelListener( + dialog -> supportFinishAfterTransition()); + builder.show(); + } else { + supportFinishAfterTransition(); + } + } + } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxState.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxState.java index 532772103..774f2c795 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxState.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxState.java @@ -5,15 +5,6 @@ import org.briarproject.bramble.api.mailbox.MailboxPairingState; class MailboxState { static class NotSetup extends MailboxState { - final boolean tellUserToWipeMailbox; - - NotSetup() { - this(false); - } - - NotSetup(boolean tellUserToWipeMailbox) { - this.tellUserToWipeMailbox = tellUserToWipeMailbox; - } } static class ShowDownload extends MailboxState { @@ -44,4 +35,12 @@ class MailboxState { } } + static class WasUnpaired extends MailboxState { + final boolean tellUserToWipeMailbox; + + WasUnpaired(boolean tellUserToWipeMailbox) { + this.tellUserToWipeMailbox = tellUserToWipeMailbox; + } + } + } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java index e74e8fc6c..0d61bfab5 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxViewModel.java @@ -226,7 +226,7 @@ class MailboxViewModel extends DbViewModel ioExecutor.execute(() -> { try { boolean wasWiped = mailboxManager.unPair(); - pairingState.postEvent(new MailboxState.NotSetup(!wasWiped)); + pairingState.postEvent(new MailboxState.WasUnpaired(!wasWiped)); } catch (DbException e) { handleException(e); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/view/BlankFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/view/BlankFragment.java new file mode 100644 index 000000000..6014e8994 --- /dev/null +++ b/briar-android/src/main/java/org/briarproject/briar/android/view/BlankFragment.java @@ -0,0 +1,12 @@ +package org.briarproject.briar.android.view; + +import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; +import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; + +import androidx.fragment.app.Fragment; + +@MethodsNotNullByDefault +@ParametersNotNullByDefault +public class BlankFragment extends Fragment { + public static final String TAG = BlankFragment.class.getName(); +}