mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-17 05:09:53 +01:00
Move setReadFlag() from ConversationClient to ConversationManager
This commit is contained in:
committed by
Torsten Grote
parent
0bf10a827f
commit
a923c1151c
@@ -10,7 +10,6 @@ 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.bramble.api.sync.MessageId;
|
||||
import org.briarproject.briar.api.client.MessageTracker;
|
||||
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
||||
import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
|
||||
@@ -39,10 +38,4 @@ public abstract class ConversationClientImpl extends BdfIncomingMessageHook
|
||||
return messageTracker.getGroupCount(txn, groupId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadFlag(GroupId g, MessageId m, boolean read)
|
||||
throws DbException {
|
||||
db.transaction(false, txn ->
|
||||
messageTracker.setReadFlag(txn, g, m, read));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,8 +5,10 @@ import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||
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.bramble.api.sync.MessageId;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
import org.briarproject.briar.api.client.MessageTracker;
|
||||
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
||||
import org.briarproject.briar.api.conversation.ConversationManager;
|
||||
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
|
||||
@@ -28,12 +30,15 @@ import static java.lang.Math.max;
|
||||
class ConversationManagerImpl implements ConversationManager {
|
||||
|
||||
private final DatabaseComponent db;
|
||||
private final MessageTracker messageTracker;
|
||||
private final Clock clock;
|
||||
private final Set<ConversationClient> clients;
|
||||
|
||||
@Inject
|
||||
ConversationManagerImpl(DatabaseComponent db, Clock clock) {
|
||||
ConversationManagerImpl(DatabaseComponent db, MessageTracker messageTracker,
|
||||
Clock clock) {
|
||||
this.db = db;
|
||||
this.messageTracker = messageTracker;
|
||||
this.clock = clock;
|
||||
clients = new CopyOnWriteArraySet<>();
|
||||
}
|
||||
@@ -81,6 +86,15 @@ class ConversationManagerImpl implements ConversationManager {
|
||||
return new GroupCount(msgCount, unreadCount, latestTime);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadFlag(GroupId g, MessageId m, boolean read)
|
||||
throws DbException {
|
||||
db.transaction(false, txn -> {
|
||||
boolean wasRead = messageTracker.setReadFlag(txn, g, m, read);
|
||||
if (read && !wasRead) db.startCleanupTimer(txn, m);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getTimestampForOutgoingMessage(Transaction txn, ContactId c)
|
||||
throws DbException {
|
||||
|
||||
@@ -126,15 +126,6 @@ class MessagingManagerImpl implements MessagingManager, IncomingMessageHook,
|
||||
return messageTracker.getGroupCount(txn, groupId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setReadFlag(GroupId g, MessageId m, boolean read)
|
||||
throws DbException {
|
||||
db.transaction(false, txn -> {
|
||||
boolean wasRead = messageTracker.setReadFlag(txn, g, m, read);
|
||||
if (read && !wasRead) db.startCleanupTimer(txn, m);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDatabaseOpened(Transaction txn) throws DbException {
|
||||
// Create a local group to indicate that we've set this client up
|
||||
|
||||
@@ -10,9 +10,9 @@ import org.briarproject.bramble.system.TimeTravelModule;
|
||||
import org.briarproject.bramble.test.TestDatabaseConfigModule;
|
||||
import org.briarproject.briar.api.autodelete.AutoDeleteManager;
|
||||
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
||||
import org.briarproject.briar.api.conversation.ConversationManager;
|
||||
import org.briarproject.briar.api.conversation.ConversationManager.ConversationClient;
|
||||
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
|
||||
import org.briarproject.briar.api.messaging.MessagingManager;
|
||||
import org.briarproject.briar.test.BriarIntegrationTest;
|
||||
import org.briarproject.briar.test.BriarIntegrationTestComponent;
|
||||
import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent;
|
||||
@@ -124,11 +124,12 @@ public abstract class AbstractAutoDeleteTest extends
|
||||
|
||||
protected void markMessageRead(BriarIntegrationTestComponent component,
|
||||
Contact contact, MessageId messageId) throws Exception {
|
||||
MessagingManager messagingManager = component.getMessagingManager();
|
||||
ConversationManager conversationManager =
|
||||
component.getConversationManager();
|
||||
ConversationClient conversationClient =
|
||||
getConversationClient(component);
|
||||
GroupId groupId = conversationClient.getContactGroup(contact).getId();
|
||||
messagingManager.setReadFlag(groupId, messageId, true);
|
||||
conversationManager.setReadFlag(groupId, messageId, true);
|
||||
waitForEvents(component);
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.briarproject.bramble.api.sync.Group;
|
||||
import org.briarproject.bramble.api.sync.MessageId;
|
||||
import org.briarproject.bramble.test.TestDatabaseConfigModule;
|
||||
import org.briarproject.briar.api.client.ProtocolStateException;
|
||||
import org.briarproject.briar.api.conversation.ConversationManager;
|
||||
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
|
||||
import org.briarproject.briar.api.conversation.DeletionResult;
|
||||
import org.briarproject.briar.api.privategroup.GroupMessage;
|
||||
@@ -41,6 +42,7 @@ public class GroupInvitationIntegrationTest
|
||||
private PrivateGroupManager groupManager0, groupManager1;
|
||||
private GroupInvitationManager groupInvitationManager0,
|
||||
groupInvitationManager1;
|
||||
private ConversationManager conversationManager1;
|
||||
private Group g1From0, g0From1;
|
||||
|
||||
@Before
|
||||
@@ -52,6 +54,7 @@ public class GroupInvitationIntegrationTest
|
||||
groupManager1 = c1.getPrivateGroupManager();
|
||||
groupInvitationManager0 = c0.getGroupInvitationManager();
|
||||
groupInvitationManager1 = c1.getGroupInvitationManager();
|
||||
conversationManager1 = c1.getConversationManager();
|
||||
g1From0 = groupInvitationManager0.getContactGroup(contact1From0);
|
||||
g0From1 = groupInvitationManager1.getContactGroup(contact0From1);
|
||||
|
||||
@@ -302,7 +305,7 @@ public class GroupInvitationIntegrationTest
|
||||
assertGroupCount(messageTracker1, g0.getId(), 2, 1);
|
||||
|
||||
// now all messages should be read
|
||||
groupInvitationManager1.setReadFlag(g0.getId(), m.getId(), true);
|
||||
conversationManager1.setReadFlag(g0.getId(), m.getId(), true);
|
||||
assertGroupCount(messageTracker1, g0.getId(), 2, 0);
|
||||
|
||||
sync1To0(1, true);
|
||||
|
||||
Reference in New Issue
Block a user