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;