keep web autocomplete sources current
This commit is contained in:
@@ -66,19 +66,20 @@ export function TextInput({
|
|||||||
type: 'profile',
|
type: 'profile',
|
||||||
sources: [follows],
|
sources: [follows],
|
||||||
})
|
})
|
||||||
|
const autocompleteFnRef = useRef(autocompleteFn)
|
||||||
|
autocompleteFnRef.current = autocompleteFn
|
||||||
/*
|
/*
|
||||||
* Adapter for the tiptap mention plugin, which renders plain profile views.
|
* Adapter for the tiptap mention plugin, which renders plain profile views.
|
||||||
* useCallback keeps the extensions useMemo below stable.
|
* Keep this callback stable because tiptap does not rebuild extensions when
|
||||||
|
* useEditor updates its options. The ref still gives it the latest local
|
||||||
|
* sources after the follows query resolves.
|
||||||
*/
|
*/
|
||||||
const autocomplete = useCallback(
|
const autocomplete = useCallback(async ({query}: {query: string}) => {
|
||||||
async ({query}: {query: string}) => {
|
const items = await autocompleteFnRef.current(query, 8)
|
||||||
const items = await autocompleteFn(query, 8)
|
return items
|
||||||
return items
|
.filter(item => item.type === 'profile')
|
||||||
.filter(item => item.type === 'profile')
|
.map(item => item.profile)
|
||||||
.map(item => item.profile)
|
}, [])
|
||||||
},
|
|
||||||
[autocompleteFn],
|
|
||||||
)
|
|
||||||
const modeClass = useColorSchemeStyle('ProseMirror-light', 'ProseMirror-dark')
|
const modeClass = useColorSchemeStyle('ProseMirror-light', 'ProseMirror-dark')
|
||||||
|
|
||||||
const [isDropping, setIsDropping] = useState(false)
|
const [isDropping, setIsDropping] = useState(false)
|
||||||
|
|||||||
Reference in New Issue
Block a user