Files
Desktop/ts/util/getDraftPreview.preload.ts
2025-11-03 10:41:49 -08:00

52 lines
1.5 KiB
TypeScript

// Copyright 2023 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { ConversationAttributesType } from '../model-types.d.ts';
import type { DraftPreviewType } from '../state/ducks/conversations.preload.js';
import { findAndFormatContact } from './findAndFormatContact.preload.js';
import { hydrateRanges } from './BodyRange.node.js';
import { isVoiceMessage } from './Attachment.std.js';
import { stripNewlinesForLeftPane } from './stripNewlinesForLeftPane.std.js';
const { i18n } = window.SignalContext;
export function getDraftPreview(
attributes: ConversationAttributesType
): DraftPreviewType {
const { draft } = attributes;
const rawBodyRanges = attributes.draftBodyRanges || [];
const bodyRanges = hydrateRanges(rawBodyRanges, findAndFormatContact);
if (draft) {
return {
text: stripNewlinesForLeftPane(draft),
bodyRanges,
};
}
const draftAttachments = attributes.draftAttachments || [];
if (draftAttachments.length > 0) {
if (isVoiceMessage(draftAttachments[0])) {
return {
text: i18n('icu:message--getNotificationText--voice-message'),
prefix: '🎤',
};
}
return {
text: i18n('icu:Conversation--getDraftPreview--attachment'),
};
}
const { quotedMessageId } = attributes;
if (quotedMessageId) {
return {
text: i18n('icu:Conversation--getDraftPreview--quote'),
};
}
return {
text: i18n('icu:Conversation--getDraftPreview--draft'),
};
}