From fc3fcf120f0ff73383b0d64063878d893150c81d Mon Sep 17 00:00:00 2001 From: Daniel Lublin Date: Wed, 3 Nov 2021 11:42:20 +0100 Subject: [PATCH] WIP Add an activity to try out mailbox qr decoding --- briar-android/src/main/AndroidManifest.xml | 9 ++ .../android/activity/ActivityComponent.java | 6 + .../android/mailbox/MailboxActivity.java | 57 +++++++ .../android/mailbox/MailboxPairFragment.java | 139 ++++++++++++++++++ .../android/mailbox/MailboxPairViewModel.java | 27 ++++ .../android/navdrawer/NavDrawerActivity.java | 3 + .../main/res/layout/fragment_mailbox_qr.xml | 48 ++++++ .../src/main/res/menu/navigation_drawer.xml | 4 + briar-android/src/main/res/values/strings.xml | 1 + 9 files changed, 294 insertions(+) create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxActivity.java create mode 100644 briar-android/src/main/java/org/briarproject/briar/android/mailbox/MailboxPairFragment.java create mode 100644 briar-android/src/main/res/layout/fragment_mailbox_qr.xml diff --git a/briar-android/src/main/AndroidManifest.xml b/briar-android/src/main/AndroidManifest.xml index 27956ce43..f4e463c7a 100644 --- a/briar-android/src/main/AndroidManifest.xml +++ b/briar-android/src/main/AndroidManifest.xml @@ -452,6 +452,15 @@ android:value="org.briarproject.briar.android.conversation.ConversationActivity" /> + + + + state = new MutableLiveEvent<>(); private final QrCodeDecoder qrCodeDecoder; @Nullable @@ -71,6 +77,7 @@ class MailboxPairViewModel extends DbViewModel LOG.info("QR code length in bytes: " + bytes.length); if (bytes.length != 65) { LOG.info("QR code has wrong length"); + state.postEvent(State.QRCODE_INVALID); return; } @@ -78,6 +85,7 @@ class MailboxPairViewModel extends DbViewModel LOG.info("QR code version: " + bytes[0]); if (bytes[0] != VERSION_REQUIRED) { LOG.info("QR code has wrong version"); + state.postEvent(State.QRCODE_INVALID); return; } @@ -86,10 +94,29 @@ class MailboxPairViewModel extends DbViewModel setupToken = StringUtils.toHexString(Arrays.copyOfRange(bytes, 33, 65)) .toLowerCase(); LOG.info("QR code is valid"); + state.postEvent(State.QRCODE_VALID); + } + + LiveEvent getState() { + return state; } QrCodeDecoder getQrCodeDecoder() { return qrCodeDecoder; } + String getOnionAddress() { + if (onionAddress == null) { + throw new IllegalStateException(); + } + return onionAddress; + } + + String getSetupToken() { + if (setupToken == null) { + throw new IllegalStateException(); + } + return setupToken; + } + } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java index 893560485..6a5818210 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/navdrawer/NavDrawerActivity.java @@ -38,6 +38,7 @@ import org.briarproject.briar.android.forum.ForumListFragment; import org.briarproject.briar.android.fragment.BaseFragment; import org.briarproject.briar.android.fragment.BaseFragment.BaseFragmentListener; import org.briarproject.briar.android.logout.SignOutFragment; +import org.briarproject.briar.android.mailbox.MailboxActivity; import org.briarproject.briar.android.privategroup.list.GroupListFragment; import org.briarproject.briar.android.settings.SettingsActivity; @@ -277,6 +278,8 @@ public class NavDrawerActivity extends BriarActivity implements startActivity(new Intent(this, SettingsActivity.class)); } else if (fragmentId == R.id.nav_btn_signout) { signOut(); + } else if (fragmentId == R.id.nav_btn_mailbox) { + startActivity(new Intent(this, MailboxActivity.class)); } } diff --git a/briar-android/src/main/res/layout/fragment_mailbox_qr.xml b/briar-android/src/main/res/layout/fragment_mailbox_qr.xml new file mode 100644 index 000000000..483502eae --- /dev/null +++ b/briar-android/src/main/res/layout/fragment_mailbox_qr.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + diff --git a/briar-android/src/main/res/menu/navigation_drawer.xml b/briar-android/src/main/res/menu/navigation_drawer.xml index 6ec0515e4..73b0f2294 100644 --- a/briar-android/src/main/res/menu/navigation_drawer.xml +++ b/briar-android/src/main/res/menu/navigation_drawer.xml @@ -37,6 +37,10 @@ android:id="@+id/nav_btn_signout" android:icon="@drawable/ic_signout" android:title="@string/sign_out_button" /> + \ No newline at end of file diff --git a/briar-android/src/main/res/values/strings.xml b/briar-android/src/main/res/values/strings.xml index 236facc1f..5e8f863c0 100644 --- a/briar-android/src/main/res/values/strings.xml +++ b/briar-android/src/main/res/values/strings.xml @@ -805,5 +805,6 @@ Hi Alice! Thanks for telling me about Briar! No problem, hope you like it 😀 + Mailbox