From 190a6bff967e8b66bd3b0ad7bdbbc0c931b21d3e Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 21 Oct 2019 14:59:10 -0300 Subject: [PATCH] [core] Add method to ConversationClient that returns a set of MessageIds it is responsible for --- .../api/conversation/ConversationManager.java | 8 ++++++++ .../introduction/IntroductionManagerImpl.java | 3 ++- .../briar/messaging/MessagingManagerImpl.java | 17 +++++++++++++++++ .../invitation/GroupInvitationManagerImpl.java | 3 ++- .../briar/sharing/SharingManagerImpl.java | 3 ++- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationManager.java b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationManager.java index fb51b2574..8ab792c3e 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/conversation/ConversationManager.java @@ -12,6 +12,7 @@ import org.briarproject.briar.api.client.MessageTracker.GroupCount; import org.briarproject.briar.api.messaging.MessagingManager; import java.util.Collection; +import java.util.Set; @NotNullByDefault public interface ConversationManager { @@ -51,6 +52,13 @@ public interface ConversationManager { Collection getMessageHeaders(Transaction txn, ContactId contactId) throws DbException; + /** + * Returns all conversation {@link MessageId}s for the given contact + * this client is responsible for. + */ + Set getMessageIds(Transaction txn, ContactId contactId) + throws DbException; + GroupCount getGroupCount(Transaction txn, ContactId c) throws DbException; diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java index 128f73445..3be4536ca 100644 --- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java @@ -660,7 +660,8 @@ class IntroductionManagerImpl extends ConversationClientImpl return allDeleted; } - private Set getMessageIds(Transaction txn, ContactId c) + @Override + public Set getMessageIds(Transaction txn, ContactId c) throws DbException { GroupId g = getContactGroup(db.getContact(txn, c)).getId(); BdfDictionary query = messageParser.getMessagesVisibleInUiQuery(); diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java index 969af3864..938b67a39 100644 --- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java @@ -7,6 +7,7 @@ import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactManager.ContactHook; import org.briarproject.bramble.api.data.BdfDictionary; +import org.briarproject.bramble.api.data.BdfEntry; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; import org.briarproject.bramble.api.db.DatabaseComponent; @@ -47,6 +48,7 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.Map; +import java.util.Set; import javax.annotation.concurrent.Immutable; import javax.inject.Inject; @@ -363,6 +365,21 @@ class MessagingManagerImpl implements MessagingManager, IncomingMessageHook, return headers; } + @Override + public Set getMessageIds(Transaction txn, ContactId c) + throws DbException { + GroupId g = getContactGroup(db.getContact(txn, c)).getId(); + BdfDictionary query = BdfDictionary.of( + new BdfEntry(MSG_KEY_MSG_TYPE, PRIVATE_MESSAGE)); + try { + Map results = + clientHelper.getMessageMetadataAsDictionary(txn, g, query); + return results.keySet(); + } catch (FormatException e) { + throw new DbException(e); + } + } + @Override public String getMessageText(MessageId m) throws DbException { try { diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java index ac660dd27..b8a8aed7b 100644 --- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java @@ -729,7 +729,8 @@ class GroupInvitationManagerImpl extends ConversationClientImpl return allDeleted; } - private Set getMessageIds(Transaction txn, ContactId c) + @Override + public Set getMessageIds(Transaction txn, ContactId c) throws DbException { GroupId g = getContactGroup(db.getContact(txn, c)).getId(); BdfDictionary query = messageParser.getMessagesVisibleInUiQuery(); 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 0f8848bc5..4ebadd4c6 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 @@ -629,7 +629,8 @@ abstract class SharingManagerImpl return allDeleted; } - private Set getMessageIds(Transaction txn, ContactId c) + @Override + public Set getMessageIds(Transaction txn, ContactId c) throws DbException { GroupId g = getContactGroup(db.getContact(txn, c)).getId(); BdfDictionary query = messageParser.getMessagesVisibleInUiQuery();