diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java index 1e1edfe92..4276ccbdb 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxManager.java @@ -1,9 +1,7 @@ package org.briarproject.bramble.api.mailbox; -import org.briarproject.bramble.api.Consumer; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Transaction; -import org.briarproject.bramble.api.lifecycle.IoExecutor; import javax.annotation.Nullable; @@ -36,13 +34,11 @@ public interface MailboxManager { /** * Can be used by the UI to test the mailbox connection. - * After the connection has been made, the given {@param connectionCallback} - * will be called with true (success) or false (error). - * In addition, a {@link OwnMailboxConnectionStatusEvent} might be broadcast - * with a new {@link MailboxStatus}. - *

- * Note that the callback will be made on the {@link IoExecutor}. + * + * @return true (success) or false (error). + * A {@link OwnMailboxConnectionStatusEvent} might be broadcast with a new + * {@link MailboxStatus}. */ - void checkConnection(Consumer connectionCallback); + boolean checkConnection(); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java index 6db11986b..39b4d7fa0 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxManagerImpl.java @@ -1,6 +1,5 @@ package org.briarproject.bramble.mailbox; -import org.briarproject.bramble.api.Consumer; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.db.TransactionManager; @@ -98,19 +97,17 @@ class MailboxManagerImpl implements MailboxManager { } @Override - public void checkConnection(Consumer connectionCallback) { - ioExecutor.execute(() -> { - boolean success; - try { - MailboxProperties props = db.transactionWithNullableResult(true, - mailboxSettingsManager::getOwnMailboxProperties); - success = api.checkStatus(props); - } catch (DbException | IOException | MailboxApi.ApiException e) { - success = false; - logException(LOG, WARNING, e); - } - connectionCallback.accept(success); - if (!success) return; + public boolean checkConnection() { + boolean success; + try { + MailboxProperties props = db.transactionWithNullableResult(true, + mailboxSettingsManager::getOwnMailboxProperties); + success = api.checkStatus(props); + } catch (DbException | IOException | MailboxApi.ApiException e) { + success = false; + logException(LOG, WARNING, e); + } + if (success) { try { // we are only recording successful connections here // as those update the UI and failures might be false negatives @@ -120,7 +117,8 @@ class MailboxManagerImpl implements MailboxManager { } catch (DbException e) { logException(LOG, WARNING, e); } - }); + } + return success; } } 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 28efd6415..96f5f66a4 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 @@ -52,6 +52,7 @@ class MailboxViewModel extends DbViewModel getLogger(MailboxViewModel.class.getName()); private final EventBus eventBus; + private final Executor ioExecutor; private final QrCodeDecoder qrCodeDecoder; private final PluginManager pluginManager; private final MailboxManager mailboxManager; @@ -76,6 +77,7 @@ class MailboxViewModel extends DbViewModel MailboxManager mailboxManager) { super(app, dbExecutor, lifecycleManager, db, androidExecutor); this.eventBus = eventBus; + this.ioExecutor = ioExecutor; this.pluginManager = pluginManager; this.mailboxManager = mailboxManager; qrCodeDecoder = new QrCodeDecoder(androidExecutor, ioExecutor, this); @@ -183,20 +185,16 @@ class MailboxViewModel extends DbViewModel LiveData checkConnection() { MutableLiveData liveData = new MutableLiveData<>(); - mailboxManager.checkConnection(result -> - onConnectionCheckFinished(liveData, result)); + ioExecutor.execute(() -> { + boolean success = mailboxManager.checkConnection(); + if (LOG.isLoggable(INFO)) { + LOG.info("Got result from connection check: " + success); + } + liveData.postValue(success); + }); return liveData; } - @IoExecutor - private void onConnectionCheckFinished(MutableLiveData liveData, - boolean success) { - if (LOG.isLoggable(INFO)) { - LOG.info("Got result from connection check: " + success); - } - liveData.postValue(success); - } - @UiThread LiveEvent getPairingState() { return pairingState;