dify/web/service/access-control/use-access-subjects.ts
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

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,
})
}