Files
Desktop/ts/util/getValidLinkPreviews.node.ts
T
2026-07-10 19:56:32 +00:00

36 lines
1007 B
TypeScript

// Copyright 2026 Signal Messenger, LLC
// SPDX-License-Identifier: AGPL-3.0-only
import type { LinkPreviewType } from '../types/message/LinkPreviews.std.ts';
import * as LinkPreview from '../types/LinkPreview.std.ts';
import { getRoomIdFromCallLink } from './callLinksRingrtc.node.ts';
import { isNotNil } from './isNotNil.std.ts';
export function getValidLinkPreviews(
previews: ReadonlyArray<LinkPreviewType>,
body: string | null | undefined,
{ isStory }: { isStory: boolean }
): Array<LinkPreviewType> {
const urlsInBody = LinkPreview.findLinks(body || '');
const validated = previews
.map((item: LinkPreviewType) => {
if (LinkPreview.isCallLink(item.url)) {
return {
...item,
isCallLink: true,
callLinkRoomId: getRoomIdFromCallLink(item.url),
};
}
if (!LinkPreview.isValidLinkPreview(urlsInBody, item, { isStory })) {
return null;
}
return item;
})
.filter(isNotNil);
return validated;
}