diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java index 3e6adc2dc..2170744ed 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java @@ -3,6 +3,7 @@ package org.briarproject.briar.api.sharing; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.db.DbException; +import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.briar.api.client.SessionId; @@ -45,6 +46,12 @@ public interface SharingManager */ Collection getSharedWith(GroupId g) throws DbException; + /** + * Returns all contacts with whom the given group is shared. + */ + Collection getSharedWith(Transaction txn, GroupId g) + throws DbException; + /** * Returns true if the group not already shared and no invitation is open */ diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java index 2b3abbd64..4a24ece90 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java @@ -426,17 +426,17 @@ abstract class SharingManagerImpl @Override public Collection getSharedWith(GroupId g) throws DbException { + return db.transactionWithResult(true, txn -> getSharedWith(txn, g)); + } + + @Override + public Collection getSharedWith(Transaction txn, GroupId g) + throws DbException { // TODO report also pending invitations Collection contacts = new ArrayList<>(); - Transaction txn = db.startTransaction(true); - try { - for (Contact c : db.getContacts(txn)) { - if (db.getGroupVisibility(txn, c.getId(), g) == SHARED) - contacts.add(c); - } - db.commitTransaction(txn); - } finally { - db.endTransaction(txn); + for (Contact c : db.getContacts(txn)) { + if (db.getGroupVisibility(txn, c.getId(), g) == SHARED) + contacts.add(c); } return contacts; }