Show "unplayed" dot on incoming audio messages

This commit is contained in:
Evan Hahn 2021-08-12 13:15:55 -05:00 committed by GitHub
parent 9fd191ae00
commit b0750e5f4e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 812 additions and 175 deletions

View file

@ -58,6 +58,7 @@ import {
StickerPackEvent,
VerifiedEvent,
ReadSyncEvent,
ViewSyncEvent,
ContactEvent,
GroupEvent,
EnvelopeEvent,
@ -79,7 +80,9 @@ import {
import { MessageRequests } from './messageModifiers/MessageRequests';
import { Reactions } from './messageModifiers/Reactions';
import { ReadSyncs } from './messageModifiers/ReadSyncs';
import { ViewSyncs } from './messageModifiers/ViewSyncs';
import { ViewOnceOpenSyncs } from './messageModifiers/ViewOnceOpenSyncs';
import { ReadStatus } from './messages/MessageReadStatus';
import {
SendStateByConversationId,
SendStatus,
@ -211,6 +214,10 @@ export async function startApp(): Promise<void> {
'readSync',
queuedEventListener(onReadSync)
);
messageReceiver.addEventListener(
'viewSync',
queuedEventListener(onViewSync)
);
messageReceiver.addEventListener(
'read',
queuedEventListener(onReadReceipt)
@ -3518,7 +3525,7 @@ export async function startApp(): Promise<void> {
conversationId: descriptor.id,
unidentifiedDeliveryReceived: data.unidentifiedDeliveryReceived,
type: 'incoming',
unread: true,
readStatus: ReadStatus.Unread,
timestamp: data.timestamp,
} as Partial<MessageAttributesType>) as WhatIsThis);
}
@ -3851,6 +3858,38 @@ export async function startApp(): Promise<void> {
return ReadSyncs.getSingleton().onSync(receipt);
}
function onViewSync(ev: ViewSyncEvent) {
const { envelopeTimestamp, senderE164, senderUuid, timestamp } = ev.view;
const senderId = window.ConversationController.ensureContactIds({
e164: senderE164,
uuid: senderUuid,
});
window.log.info(
'view sync',
senderE164,
senderUuid,
envelopeTimestamp,
senderId,
'for message',
timestamp
);
const receipt = ViewSyncs.getSingleton().add({
senderId,
senderE164,
senderUuid,
timestamp,
viewedAt: envelopeTimestamp,
});
receipt.on('remove', ev.confirm);
// Note: Here we wait, because we want viewed states to be in the database
// before we move on.
return ViewSyncs.getSingleton().onSync(receipt);
}
async function onVerified(ev: VerifiedEvent) {
const e164 = ev.verified.destination;
const uuid = ev.verified.destinationUuid;