mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2026-07-25 23:48:13 +01:00
36 lines
1007 B
TypeScript
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;
|
|
}
|