mirror of
https://github.com/langgenius/dify.git
synced 2026-06-21 10:01:08 +08:00
Co-authored-by: JzoNg <jzongcode@gmail.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { debounce, parseAsArrayOf, parseAsString, useQueryStates } from 'nuqs'
|
|
import { useCallback, useMemo, useState } from 'react'
|
|
import { SNIPPET_LIST_SEARCH_DEBOUNCE_MS } from '../constants'
|
|
|
|
const snippetListQueryParsers = {
|
|
tagIDs: parseAsArrayOf(parseAsString, ';')
|
|
.withDefault([])
|
|
.withOptions({ history: 'push' }),
|
|
keywords: parseAsString.withDefault('').withOptions({
|
|
limitUrlUpdates: debounce(SNIPPET_LIST_SEARCH_DEBOUNCE_MS),
|
|
}),
|
|
}
|
|
|
|
export function useSnippetsQueryState() {
|
|
const [urlQuery, setUrlQuery] = useQueryStates(snippetListQueryParsers)
|
|
const [creatorIDs, setCreatorIDs] = useState<string[]>([])
|
|
|
|
const setKeywords = useCallback((keywords: string) => {
|
|
setUrlQuery({ keywords })
|
|
}, [setUrlQuery])
|
|
|
|
const setTagIDs = useCallback((tagIDs: string[]) => {
|
|
setUrlQuery({ tagIDs })
|
|
}, [setUrlQuery])
|
|
|
|
const handleSetCreatorIDs = useCallback((creatorIDs: string[]) => {
|
|
setCreatorIDs(creatorIDs)
|
|
}, [])
|
|
|
|
const query = useMemo(() => ({
|
|
...urlQuery,
|
|
creatorIDs,
|
|
}), [creatorIDs, urlQuery])
|
|
|
|
return useMemo(() => ({
|
|
query,
|
|
setKeywords,
|
|
setTagIDs,
|
|
setCreatorIDs: handleSetCreatorIDs,
|
|
}), [handleSetCreatorIDs, query, setKeywords, setTagIDs])
|
|
}
|