Add read and viewed receipts to the MSL.

This commit is contained in:
Greyson Parrelli
2021-06-30 17:26:40 -04:00
committed by Alex Hart
parent 3d0e15e2b8
commit 0921ebe5f1
13 changed files with 190 additions and 97 deletions

View File

@@ -92,14 +92,16 @@ public class MarkReadReceiver extends BroadcastReceiver {
.collect(Collectors.groupingBy(MarkedMessageInfo::getThreadId));
Stream.of(threadToInfo).forEach(threadToInfoEntry -> {
Map<RecipientId, List<SyncMessageId>> idMapForThread = Stream.of(threadToInfoEntry.getValue())
.map(MarkedMessageInfo::getSyncMessageId)
.collect(Collectors.groupingBy(SyncMessageId::getRecipientId));
Map<RecipientId, List<MarkedMessageInfo>> recipientIdToInfo = Stream.of(threadToInfoEntry.getValue())
.map(info -> info)
.collect(Collectors.groupingBy(info -> info.getSyncMessageId().getRecipientId()));
Stream.of(idMapForThread).forEach(entry -> {
List<Long> timestamps = Stream.of(entry.getValue()).map(SyncMessageId::getTimetamp).toList();
Stream.of(recipientIdToInfo).forEach(entry -> {
long threadId = threadToInfoEntry.getKey();
RecipientId recipientId = entry.getKey();
List<MarkedMessageInfo> infos = entry.getValue();
SendReadReceiptJob.enqueue(threadToInfoEntry.getKey(), entry.getKey(), timestamps);
SendReadReceiptJob.enqueue(threadId, recipientId, infos);
});
});
}