mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-02-15 07:28:59 +00:00
55 lines
1.3 KiB
TypeScript
55 lines
1.3 KiB
TypeScript
// Copyright 2025 Signal Messenger, LLC
|
|
// SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
import type { ReadonlyMessageAttributesType } from '../model-types.d.ts';
|
|
import { isIncoming, isOutgoing } from '../messages/helpers.std.js';
|
|
import { ReadStatus } from '../messages/MessageReadStatus.std.js';
|
|
import {
|
|
isSent,
|
|
isViewed,
|
|
isMessageJustForMe,
|
|
getHighestSuccessfulRecipientStatus,
|
|
} from '../messages/MessageSendState.std.js';
|
|
|
|
export function isVoiceMessagePlayed(
|
|
message: Pick<
|
|
ReadonlyMessageAttributesType,
|
|
'type' | 'isErased' | 'errors' | 'readStatus' | 'sendStateByConversationId'
|
|
>,
|
|
ourConversationId: string | undefined
|
|
): boolean {
|
|
if (message.isErased) {
|
|
return false;
|
|
}
|
|
|
|
if (message.errors != null && message.errors.length > 0) {
|
|
return false;
|
|
}
|
|
|
|
if (isIncoming(message)) {
|
|
return message.readStatus === ReadStatus.Viewed;
|
|
}
|
|
|
|
if (isOutgoing(message)) {
|
|
const { sendStateByConversationId = {} } = message;
|
|
|
|
if (isMessageJustForMe(sendStateByConversationId, ourConversationId)) {
|
|
return isSent(
|
|
getHighestSuccessfulRecipientStatus(
|
|
sendStateByConversationId,
|
|
undefined
|
|
)
|
|
);
|
|
}
|
|
|
|
return isViewed(
|
|
getHighestSuccessfulRecipientStatus(
|
|
sendStateByConversationId,
|
|
ourConversationId
|
|
)
|
|
);
|
|
}
|
|
|
|
return false;
|
|
}
|