keep web autocomplete sources current

This commit is contained in:
vineyardbovines
2026-07-17 10:01:53 -04:00
parent a12ed782a7
commit bd31440330
@@ -66,19 +66,20 @@ export function TextInput({
type: 'profile',
sources: [follows],
})
const autocompleteFnRef = useRef(autocompleteFn)
autocompleteFnRef.current = autocompleteFn
/*
* 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(
async ({query}: {query: string}) => {
const items = await autocompleteFn(query, 8)
return items
.filter(item => item.type === 'profile')
.map(item => item.profile)
},
[autocompleteFn],
)
const autocomplete = useCallback(async ({query}: {query: string}) => {
const items = await autocompleteFnRef.current(query, 8)
return items
.filter(item => item.type === 'profile')
.map(item => item.profile)
}, [])
const modeClass = useColorSchemeStyle('ProseMirror-light', 'ProseMirror-dark')
const [isDropping, setIsDropping] = useState(false)