ultisuite-client/lib/api/hooks/use-admin-queries.ts
R3D347HR4Y 9e9fd208ad
Some checks are pending
E2E / Playwright e2e (push) Waiting to run
feat(admin-settings): enhance admin settings with new components and layout improvements
- Introduced new components for managing admin settings, including AdminListControls, AdminSettingsCard, and TechBrandSelectLabel.
- Implemented dynamic loading for admin settings sections to optimize performance.
- Enhanced the layout of various admin settings sections for better user experience.
- Updated the AiAssistantSection to include LLM provider management and improved model selection.
- Refactored authentication settings to streamline configuration and improve accessibility.
2026-06-15 00:22:20 +02:00

110 lines
3.1 KiB
TypeScript

"use client"
import { useQuery } from "@tanstack/react-query"
import { apiClient } from "@/lib/api/client"
import type {
AdminAuditListResponse,
AdminPublicSharesListResponse,
AdminStatsResponse,
AdminUserDetail,
AdminUserGroupsListResponse,
AdminUsersListResponse,
} from "@/lib/api/admin-types"
import { useAuthReady } from "@/lib/api/use-auth-ready"
export type AdminUsersQueryParams = {
page?: number
page_size?: number
q?: string
sort?: string
status?: string
role?: string
group_id?: string
}
export type AdminUserGroupsQueryParams = {
page?: number
page_size?: number
q?: string
}
export function useAdminStats() {
const { ready, authenticated } = useAuthReady()
return useQuery({
queryKey: ["admin", "stats"],
queryFn: () => apiClient.get<AdminStatsResponse>("/admin/stats"),
enabled: ready && authenticated,
})
}
export function useAdminUsers(params: AdminUsersQueryParams = {}) {
const { ready, authenticated } = useAuthReady()
return useQuery({
queryKey: ["admin", "users", params],
queryFn: () =>
apiClient.get<AdminUsersListResponse>("/admin/users", {
page: params.page?.toString(),
page_size: params.page_size?.toString(),
q: params.q,
sort: params.sort,
status: params.status,
role: params.role,
group_id: params.group_id,
}),
enabled: ready && authenticated,
})
}
export function useAdminUserGroups(params: AdminUserGroupsQueryParams = {}) {
const { ready, authenticated } = useAuthReady()
return useQuery({
queryKey: ["admin", "user-groups", params],
queryFn: () =>
apiClient.get<AdminUserGroupsListResponse>("/admin/user-groups", {
page: params.page?.toString(),
page_size: params.page_size?.toString(),
q: params.q,
}),
enabled: ready && authenticated,
})
}
export function useAdminUser(userId: string | null) {
const { ready, authenticated } = useAuthReady()
return useQuery({
queryKey: ["admin", "users", userId],
queryFn: () => apiClient.get<AdminUserDetail>(`/admin/users/${userId}`),
enabled: ready && authenticated && Boolean(userId),
})
}
export function useAdminPublicShares(
params: { page?: number; page_size?: number; q?: string; sort?: string } = {}
) {
const { ready, authenticated } = useAuthReady()
return useQuery({
queryKey: ["admin", "public-shares", params],
queryFn: () =>
apiClient.get<AdminPublicSharesListResponse>("/admin/public-shares", {
page: params.page?.toString(),
page_size: params.page_size?.toString(),
q: params.q,
sort: params.sort,
}),
enabled: ready && authenticated,
})
}
export function useAdminAuditLogs(params: { page?: number; page_size?: number } = {}) {
const { ready, authenticated } = useAuthReady()
return useQuery({
queryKey: ["admin", "audit", params],
queryFn: () =>
apiClient.get<AdminAuditListResponse>("/admin/audit", {
page: params.page?.toString(),
page_size: params.page_size?.toString(),
}),
enabled: ready && authenticated,
})
}