mirror of
https://github.com/langgenius/dify.git
synced 2026-07-23 20:18:40 +08:00
52 lines
1.5 KiB
TypeScript
52 lines
1.5 KiB
TypeScript
import type { AccessControlGroup, Subject } from '@/models/access-control'
|
|
import { useInfiniteQuery } from '@tanstack/react-query'
|
|
import { consoleClient } from '../client'
|
|
|
|
const NAME_SPACE = 'access-control'
|
|
|
|
type SearchAccessSubjectsResult = {
|
|
currPage: number
|
|
totalPages: number
|
|
subjects: Subject[]
|
|
hasMore: boolean
|
|
}
|
|
|
|
export type SearchAccessSubjectsQuery = {
|
|
keyword?: string
|
|
groupId?: AccessControlGroup['id']
|
|
resultsPerPage?: number
|
|
}
|
|
|
|
export const useSearchAccessSubjects = (query: SearchAccessSubjectsQuery, enabled: boolean) => {
|
|
const { keyword, groupId, resultsPerPage } = query
|
|
|
|
return useInfiniteQuery({
|
|
queryKey: [NAME_SPACE, 'access-subject-candidates', keyword, groupId, resultsPerPage],
|
|
queryFn: async ({ pageParam }) => {
|
|
const response = await consoleClient.enterprise.webAppAuth.searchForWhilteListCandidates({
|
|
query: {
|
|
...(keyword ? { keyword } : {}),
|
|
...(groupId ? { groupId } : {}),
|
|
...(resultsPerPage ? { resultsPerPage } : {}),
|
|
pageNumber: pageParam as number,
|
|
},
|
|
})
|
|
|
|
return {
|
|
currPage: response.currPage ?? (pageParam as number),
|
|
totalPages: 0,
|
|
subjects: (response.subjects ?? []) as Subject[],
|
|
hasMore: response.hasMore ?? false,
|
|
} satisfies SearchAccessSubjectsResult
|
|
},
|
|
initialPageParam: 1,
|
|
getNextPageParam: (lastPage) => {
|
|
if (lastPage.hasMore) return lastPage.currPage + 1
|
|
return undefined
|
|
},
|
|
gcTime: 0,
|
|
staleTime: 0,
|
|
enabled,
|
|
})
|
|
}
|