diff --git a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackupManager.java b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackupManager.java index 20185a3aa..5e850b185 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackupManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/socialbackup/SocialBackupManager.java @@ -1,5 +1,6 @@ package org.briarproject.briar.api.socialbackup; +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; @@ -52,4 +53,6 @@ public interface SocialBackupManager extends @Override Collection getMessageHeaders( Transaction txn, ContactId contactId) throws DbException; + + boolean amCustodian(Transaction txn, ContactId contactId); } diff --git a/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java index ad5755f01..fb971cee5 100644 --- a/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/socialbackup/SocialBackupManagerImpl.java @@ -230,6 +230,17 @@ class SocialBackupManagerImpl extends ConversationClientImpl return false; } + public boolean amCustodian(Transaction txn, ContactId contactId) { + try { + GroupId groupId = getContactGroup(db.getContact(txn, contactId)).getId(); + return findMessage(txn, groupId, SHARD, false) != null; + } catch (DbException e) { + return false; + } catch (FormatException e) { + return false; + } + } + @Nullable @Override public BackupMetadata getBackupMetadata(Transaction txn) diff --git a/briar-core/src/test/java/org/briarproject/briar/socialbackup/SocialBackupIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/socialbackup/SocialBackupIntegrationTest.java index 890dfe6a1..9fedae1c9 100644 --- a/briar-core/src/test/java/org/briarproject/briar/socialbackup/SocialBackupIntegrationTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/socialbackup/SocialBackupIntegrationTest.java @@ -122,6 +122,9 @@ public class SocialBackupIntegrationTest ShardMessageHeader s = (ShardMessageHeader) h; assertFalse(s.isLocal()); } + db1.transaction(false, txn -> { + assertTrue(socialBackupManager1.amCustodian(txn, contactId0From1)); + }); // the shard message from 0 should have arrived at 2 Collection messages0At2 =