fix: ignore pasted @ for file mentions (#1649)

Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
Nicolas Charpentier
2026-06-23 14:07:09 +03:00
committed by GitHub
co-authored by Bohdan Triapitsyn
parent 18744bf723
commit b87de3c5b2
3 changed files with 200 additions and 22 deletions
@@ -0,0 +1,32 @@
export type FileMentionAutocompleteInputSource = 'manual' | 'paste';
export const getFileMentionAutocompleteQuery = ({
value,
cursorPosition,
inputSource = 'manual',
insertedText,
}: {
value: string;
cursorPosition: number;
inputSource?: FileMentionAutocompleteInputSource;
insertedText?: string;
}): string | null => {
if (inputSource === 'paste' && insertedText?.includes('@')) {
return null;
}
const textBeforeCursor = value.substring(0, cursorPosition);
const lastAtSymbol = textBeforeCursor.lastIndexOf('@');
if (lastAtSymbol === -1) {
return null;
}
const charBefore = lastAtSymbol > 0 ? textBeforeCursor[lastAtSymbol - 1] : null;
const textAfterAt = textBeforeCursor.substring(lastAtSymbol + 1);
const isWordBoundary = !charBefore || /\s/.test(charBefore);
if (!isWordBoundary || textAfterAt.includes(' ') || textAfterAt.includes('\n')) {
return null;
}
return textAfterAt;
};