diff --git a/src/view/com/composer/ComposePost.tsx b/src/view/com/composer/ComposePost.tsx index b8925241..b7abbed4 100644 --- a/src/view/com/composer/ComposePost.tsx +++ b/src/view/com/composer/ComposePost.tsx @@ -108,19 +108,24 @@ export const ComposePost = observer(function ComposePost({ : undefined const textDecorated = useMemo(() => { - return (text || '').split(/(\s)/g).map((item, i) => { - if ( - /^@[a-zA-Z0-9\.-]+$/g.test(item) && - autocompleteView.knownHandles.has(item.slice(1)) - ) { - return ( - - {item} - - ) - } - return item - }) + const re = /(@[a-z0-9\.]*)/gi + const segments = [] + let match + let start = 0 + let i = 0 + while ((match = re.exec(text))) { + segments.push(text.slice(start, match.index)) + segments.push( + + {match[0]} + , + ) + start = match.index + match[0].length + } + if (start < text.length) { + segments.push(text.slice(start)) + } + return segments }, [text]) return ( @@ -194,7 +199,7 @@ export const ComposePost = observer(function ComposePost({ ) }) -const atPrefixRegex = /@([\S]*)$/i +const atPrefixRegex = /@([a-z0-9\.]*)$/i function extractTextAutocompletePrefix(text: string) { const match = atPrefixRegex.exec(text) if (match) {