From ce10e6770fea58948ea2fb6cbf6fc0e4f596c326 Mon Sep 17 00:00:00 2001 From: ialokim Date: Fri, 12 May 2023 23:58:59 +0200 Subject: [PATCH] add transactional versions to delete message functions --- .../api/conversation/ConversationManager.java | 12 ++++++ .../conversation/ConversationManagerImpl.java | 42 ++++++++++++------- 2 files changed, 38 insertions(+), 16 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 dd8dc3519..36f380983 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 @@ -96,12 +96,24 @@ public interface ConversationManager { */ DeletionResult deleteAllMessages(ContactId c) throws DbException; + /** + * Deletes all messages exchanged with the given contact. + */ + DeletionResult deleteAllMessages(Transaction txn, ContactId c) + throws DbException; + /** * Deletes the given set of messages associated with the given contact. */ DeletionResult deleteMessages(ContactId c, Collection messageIds) throws DbException; + /** + * Deletes the given set of messages associated with the given contact. + */ + DeletionResult deleteMessages(Transaction txn, ContactId c, + Collection messageIds) throws DbException; + @NotNullByDefault interface ConversationClient { diff --git a/briar-core/src/main/java/org/briarproject/briar/conversation/ConversationManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/conversation/ConversationManagerImpl.java index ee2589f42..854eabbc8 100644 --- a/briar-core/src/main/java/org/briarproject/briar/conversation/ConversationManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/conversation/ConversationManagerImpl.java @@ -146,27 +146,37 @@ class ConversationManagerImpl implements ConversationManager { @Override public DeletionResult deleteAllMessages(ContactId c) throws DbException { - return db.transactionWithResult(false, txn -> { - DeletionResult result = new DeletionResult(); - for (ConversationClient client : clients) { - result.addDeletionResult(client.deleteAllMessages(txn, c)); - } - return result; - }); + return db.transactionWithResult(false, txn -> + deleteAllMessages(txn, c)); + } + + @Override + public DeletionResult deleteAllMessages(Transaction txn, ContactId c) + throws DbException { + DeletionResult result = new DeletionResult(); + for (ConversationClient client : clients) { + result.addDeletionResult(client.deleteAllMessages(txn, c)); + } + return result; } @Override public DeletionResult deleteMessages(ContactId c, Collection toDelete) throws DbException { - return db.transactionWithResult(false, txn -> { - DeletionResult result = new DeletionResult(); - for (ConversationClient client : clients) { - Set idSet = client.getMessageIds(txn, c); - idSet.retainAll(toDelete); - result.addDeletionResult(client.deleteMessages(txn, c, idSet)); - } - return result; - }); + return db.transactionWithResult(false, txn -> + deleteMessages(txn, c, toDelete)); + } + + @Override + public DeletionResult deleteMessages(Transaction txn, ContactId c, + Collection toDelete) throws DbException { + DeletionResult result = new DeletionResult(); + for (ConversationClient client : clients) { + Set idSet = client.getMessageIds(txn, c); + idSet.retainAll(toDelete); + result.addDeletionResult(client.deleteMessages(txn, c, idSet)); + } + return result; } }