ultisuite-client/lib/api/hooks/use-org-settings.ts
2026-06-07 21:55:42 +02:00

41 lines
1.3 KiB
TypeScript

"use client"
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"
import { apiClient } from "@/lib/api/client"
import type {
ApiOrgSettingsPutRequest,
ApiOrgSettingsResponse,
} from "@/lib/api/admin-org-types"
import { useAuthReady } from "@/lib/api/use-auth-ready"
import { adminScopesFromToken, isPlatformAdminFromToken } from "@/lib/auth/admin"
import { useAuthStore } from "@/lib/api/auth-store"
export const ORG_SETTINGS_QUERY_KEY = ["admin", "org-settings"] as const
export function useOrgSettings() {
const { ready, authenticated } = useAuthReady()
const token = useAuthStore((s) => s.accessToken)
const scopes = adminScopesFromToken(token)
const isAdmin = isPlatformAdminFromToken(token) || scopes.read
return useQuery({
queryKey: ORG_SETTINGS_QUERY_KEY,
queryFn: () => apiClient.get<ApiOrgSettingsResponse>("/admin/org/settings"),
staleTime: 60_000,
enabled: ready && authenticated && isAdmin,
retry: 1,
})
}
export function useUpdateOrgSettings() {
const queryClient = useQueryClient()
return useMutation({
mutationFn: (body: ApiOrgSettingsPutRequest) =>
apiClient.put<ApiOrgSettingsResponse>("/admin/org/settings", body),
onSuccess: (data) => {
queryClient.setQueryData(ORG_SETTINGS_QUERY_KEY, data)
},
})
}