fix: ignore pasted @ for file mentions (#1649)
Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
Bohdan Triapitsyn
parent
18744bf723
commit
b87de3c5b2
@@ -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;
|
||||
};
|
||||
Reference in New Issue
Block a user