From e4a7b1731a64e58c7a646240e2a2d41acef2c4a1 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Thu, 10 Feb 2022 08:17:43 -0300 Subject: [PATCH] Do real check if mailbox is set up --- .../android/mailbox/MailboxActivity.java | 11 +++++++++ .../briar/android/mailbox/MailboxState.java | 9 ++++++- .../android/mailbox/MailboxViewModel.java | 24 ++++++++++++------- 3 files changed, 34 insertions(+), 10 deletions(-) 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 03cc51f84..4c70b9819 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 @@ -3,7 +3,9 @@ package org.briarproject.briar.android.mailbox; import android.os.Bundle; import android.view.MenuItem; import android.widget.ProgressBar; +import android.widget.Toast; +import org.briarproject.bramble.api.mailbox.MailboxStatus; import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault; import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault; import org.briarproject.briar.R; @@ -57,6 +59,10 @@ public class MailboxActivity extends BriarActivity { onQrCodeWrong(); } else if (state instanceof MailboxState.OfflineInSetup) { onOffline(); + } else if (state instanceof MailboxState.IsSetup) { + onIsSetup(((MailboxState.IsSetup) state).mailboxStatus); + } else { + throw new AssertionError("Unknown state: " + state); } }); } @@ -107,4 +113,9 @@ public class MailboxActivity extends BriarActivity { OfflineFragment.TAG); } + private void onIsSetup(MailboxStatus mailboxStatus) { + // TODO + Toast.makeText(this, "NOT IMPLEMENTED", Toast.LENGTH_LONG).show(); + } + } 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 b775653aa..65de4d166 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 @@ -1,6 +1,7 @@ package org.briarproject.briar.android.mailbox; import org.briarproject.bramble.api.mailbox.MailboxProperties; +import org.briarproject.bramble.api.mailbox.MailboxStatus; class MailboxState { @@ -21,6 +22,12 @@ class MailboxState { } } - // TODO add other states + static class IsSetup extends MailboxState { + final MailboxStatus mailboxStatus; + + IsSetup(MailboxStatus mailboxStatus) { + this.mailboxStatus = mailboxStatus; + } + } } 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 3d833cc4c..7381a220c 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 @@ -12,6 +12,8 @@ import org.briarproject.bramble.api.lifecycle.IoExecutor; import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.mailbox.MailboxAuthToken; import org.briarproject.bramble.api.mailbox.MailboxProperties; +import org.briarproject.bramble.api.mailbox.MailboxSettingsManager; +import org.briarproject.bramble.api.mailbox.MailboxStatus; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.Plugin; import org.briarproject.bramble.api.plugin.PluginManager; @@ -51,6 +53,7 @@ class MailboxViewModel extends DbViewModel private final CryptoComponent crypto; private final QrCodeDecoder qrCodeDecoder; private final PluginManager pluginManager; + private final MailboxSettingsManager mailboxSettingsManager; private final MutableLiveData state = new MutableLiveData<>(); @@ -63,25 +66,28 @@ class MailboxViewModel extends DbViewModel AndroidExecutor androidExecutor, @IoExecutor Executor ioExecutor, CryptoComponent crypto, - PluginManager pluginManager) { + PluginManager pluginManager, + MailboxSettingsManager mailboxSettingsManager) { super(app, dbExecutor, lifecycleManager, db, androidExecutor); this.crypto = crypto; this.pluginManager = pluginManager; + this.mailboxSettingsManager = mailboxSettingsManager; qrCodeDecoder = new QrCodeDecoder(androidExecutor, ioExecutor, this); checkIfSetup(); } @UiThread private void checkIfSetup() { - runOnDbThread(() -> { - // TODO really check if mailbox is setup/paired/linked - try { - Thread.sleep(1000); - } catch (InterruptedException e) { - e.printStackTrace(); + runOnDbThread(true, txn -> { + MailboxProperties props = + mailboxSettingsManager.getOwnMailboxProperties(txn); + if (props == null) state.postValue(new NotSetup()); + else { + MailboxStatus mailboxStatus = + mailboxSettingsManager.getOwnMailboxStatus(txn); + state.postValue(new MailboxState.IsSetup(mailboxStatus)); } - state.postValue(new NotSetup()); - }); + }, this::handleException); } @Override