mirror of
https://github.com/langgenius/dify.git
synced 2026-06-07 16:32:01 +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.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import type { AppListCategory } from '../app-type-filter-shared'
|
|
import { debounce, parseAsString, useQueryStates } from 'nuqs'
|
|
import { useCallback, useMemo, useState } from 'react'
|
|
import { parseAsAppListCategory } from '../app-type-filter-shared'
|
|
import { APP_LIST_SEARCH_DEBOUNCE_MS } from '../constants'
|
|
|
|
const appListQueryParsers = {
|
|
category: parseAsAppListCategory,
|
|
keywords: parseAsString.withDefault('').withOptions({
|
|
limitUrlUpdates: debounce(APP_LIST_SEARCH_DEBOUNCE_MS),
|
|
}),
|
|
}
|
|
|
|
export function useAppsQueryState() {
|
|
const [urlQuery, setUrlQuery] = useQueryStates(appListQueryParsers)
|
|
const [creatorIDs, setCreatorIDs] = useState<string[]>([])
|
|
|
|
const setCategory = useCallback((category: AppListCategory) => {
|
|
setUrlQuery({ category })
|
|
}, [setUrlQuery])
|
|
|
|
const setKeywords = useCallback((keywords: string) => {
|
|
setUrlQuery({ keywords })
|
|
}, [setUrlQuery])
|
|
|
|
const handleSetCreatorIDs = useCallback((creatorIDs: string[]) => {
|
|
setCreatorIDs(creatorIDs)
|
|
}, [])
|
|
|
|
const query = useMemo(() => ({
|
|
...urlQuery,
|
|
creatorIDs,
|
|
}), [creatorIDs, urlQuery])
|
|
|
|
return useMemo(() => ({
|
|
query,
|
|
setCategory,
|
|
setKeywords,
|
|
setCreatorIDs: handleSetCreatorIDs,
|
|
}), [handleSetCreatorIDs, query, setCategory, setKeywords])
|
|
}
|