diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupViewModel.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupViewModel.java index 557eb2865..b64dad46a 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupViewModel.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupViewModel.java @@ -245,20 +245,16 @@ class GroupViewModel extends ThreadListViewModel { } public void loadSharingContacts() { - runOnDbThread(() -> { - try { - Collection members = - privateGroupManager.getMembers(groupId); - Collection contactIds = new ArrayList<>(); - for (GroupMember m : members) { - if (m.getContactId() != null) - contactIds.add(m.getContactId()); - } - sharingController.addAll(contactIds); - } catch (DbException e) { - logException(LOG, WARNING, e); + runOnDbThread(true, txn -> { + Collection members = + privateGroupManager.getMembers(txn, groupId); + Collection contactIds = new ArrayList<>(); + for (GroupMember m : members) { + if (m.getContactId() != null) + contactIds.add(m.getContactId()); } - }); + txn.attach(() -> sharingController.addAll(contactIds)); + }, e -> logException(LOG, WARNING, e)); } void deletePrivateGroup() { diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingController.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingController.java index 9a175534e..3fd3f4e96 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingController.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingController.java @@ -1,7 +1,6 @@ package org.briarproject.briar.android.sharing; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; @@ -28,7 +27,7 @@ public interface SharingController { /** * Adds a collection of contacts to be tracked. */ - @DatabaseExecutor + @UiThread void addAll(Collection contacts); /** diff --git a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingControllerImpl.java index 55a4149a8..b58ab1a08 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/sharing/SharingControllerImpl.java @@ -2,14 +2,12 @@ package org.briarproject.briar.android.sharing; import org.briarproject.bramble.api.connection.ConnectionRegistry; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.event.EventBus; import org.briarproject.bramble.api.event.EventListener; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.plugin.event.ContactConnectedEvent; import org.briarproject.bramble.api.plugin.event.ContactDisconnectedEvent; -import org.briarproject.bramble.api.system.AndroidExecutor; import java.util.Collection; import java.util.HashSet; @@ -26,7 +24,6 @@ public class SharingControllerImpl implements SharingController, EventListener { private final EventBus eventBus; private final ConnectionRegistry connectionRegistry; - private final AndroidExecutor executor; // UI thread private final Set contacts = new HashSet<>(); @@ -35,11 +32,9 @@ public class SharingControllerImpl implements SharingController, EventListener { @Inject SharingControllerImpl(EventBus eventBus, - ConnectionRegistry connectionRegistry, - AndroidExecutor executor) { + ConnectionRegistry connectionRegistry) { this.eventBus = eventBus; this.connectionRegistry = connectionRegistry; - this.executor = executor; eventBus.addListener(this); } @@ -78,13 +73,11 @@ public class SharingControllerImpl implements SharingController, EventListener { return online; } + @UiThread @Override - @DatabaseExecutor public void addAll(Collection c) { - executor.runOnUiThread(() -> { - contacts.addAll(c); - updateLiveData(); - }); + contacts.addAll(c); + updateLiveData(); } @UiThread