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

@ -1,16 +1,21 @@
// Copyright 2021 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import { MessageAttributesType } from '../model-types.d';
import type { MessageAttributesType } from '../model-types.d';
import { ReadStatus, maxReadStatus } from '../messages/MessageReadStatus';
export function markRead(
messageAttrs: MessageAttributesType,
readAt?: number,
{ skipSave = false } = {}
function markReadOrViewed(
messageAttrs: Readonly<MessageAttributesType>,
readStatus: ReadStatus.Read | ReadStatus.Viewed,
timestamp: undefined | number,
skipSave: boolean
): MessageAttributesType {
const nextMessageAttributes = {
const oldReadStatus = messageAttrs.readStatus ?? ReadStatus.Read;
const newReadStatus = maxReadStatus(oldReadStatus, readStatus);
const nextMessageAttributes: MessageAttributesType = {
...messageAttrs,
unread: false,
readStatus: newReadStatus,
};
const { id: messageId, expireTimer, expirationStartTimestamp } = messageAttrs;
@ -18,7 +23,7 @@ export function markRead(
if (expireTimer && !expirationStartTimestamp) {
nextMessageAttributes.expirationStartTimestamp = Math.min(
Date.now(),
readAt || Date.now()
timestamp || Date.now()
);
}
@ -30,3 +35,17 @@ export function markRead(
return nextMessageAttributes;
}
export const markRead = (
messageAttrs: Readonly<MessageAttributesType>,
readAt?: number,
{ skipSave = false } = {}
): MessageAttributesType =>
markReadOrViewed(messageAttrs, ReadStatus.Read, readAt, skipSave);
export const markViewed = (
messageAttrs: Readonly<MessageAttributesType>,
viewedAt?: number,
{ skipSave = false } = {}
): MessageAttributesType =>
markReadOrViewed(messageAttrs, ReadStatus.Viewed, viewedAt, skipSave);