Fix link previews for messages with emojis

This commit is contained in:
Elias Zamaria authored and Jamie Kyle committed 2025-09-26 10:17:46 -07:00
1 parent fd9f7a9fba
commit 2fb73bd753
2 files changed
+20 -1

No files matched your search

+18
View File
@@ -116,6 +116,24 @@ describe('Link previews', () => {
assert.deepEqual(expected, actual);
});
it('returns all links after emojis with spaces in between, if a caretLocation is provided', () => {
const text = '😎 https://github.com/signalapp/Signal-Desktop';
const expected = ['https://github.com/signalapp/Signal-Desktop'];
const actual = findLinks(text, 45);
assert.deepEqual(expected, actual);
});
it('returns all links after a complex emoji, if a caretLocation is provided', () => {
const text = '👨‍👩‍👦 https://github.com/signalapp/Signal-Desktop';
const expected = ['https://github.com/signalapp/Signal-Desktop'];
const actual = findLinks(text, 45);
assert.deepEqual(expected, actual);
});
it('includes all links if cursor is not in a link', () => {
const text =
'Check out this link: https://github.com/signalapp/Signal-Desktop\nAnd this one too: https://github.com/signalapp/Signal-Android';
+2 -1
View File
@@ -10,6 +10,7 @@ import LinkifyIt from 'linkify-it';
import { maybeParseUrl } from '../util/url.js';
import { replaceEmojiWithSpaces } from '../util/emoji.js';
import { count } from '../util/grapheme.js';
import type { AttachmentWithHydratedData } from './Attachment.js';
import {
@@ -167,7 +168,7 @@ export function findLinks(text: string, caretLocation?: number): Array<string> {
}
const haveCaretLocation = isNumber(caretLocation);
const textLength = text ? text.length : 0;
const textLength = count(text || '');
const matches = linkify.match(text ? replaceEmojiWithSpaces(text) : '') || [];
return compact(