From 365fa589282ca43ce68b3dcf49739d1dc5fbbf58 Mon Sep 17 00:00:00 2001 From: ameba23 Date: Mon, 22 Mar 2021 17:02:39 +0100 Subject: [PATCH] add amCustodian method which determines whether you are a custodian for a given contact --- .../briar/api/socialbackup/SocialBackupManager.java | 3 +++ .../briar/socialbackup/SocialBackupManagerImpl.java | 11 +++++++++++ .../socialbackup/SocialBackupIntegrationTest.java | 3 +++ 3 files changed, 17 insertions(+) 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 =