- Add logging when enrollment is silently skipped due to existing state - Add DELETE /admin/crowdsec/console/enrollment endpoint to clear state - Add re-enrollment UI section with guidance and crowdsec.net link - Add useClearConsoleEnrollment hook for state clearing Fixes silent idempotency bug where backend returned 200 OK without actually executing cscli when status was already enrolled.
28 lines
949 B
TypeScript
28 lines
949 B
TypeScript
import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
|
|
import { enrollConsole, getConsoleStatus, clearConsoleEnrollment, type ConsoleEnrollPayload, type ConsoleEnrollmentStatus } from '../api/consoleEnrollment'
|
|
|
|
export function useConsoleStatus(enabled = true) {
|
|
return useQuery<ConsoleEnrollmentStatus>({ queryKey: ['crowdsec-console-status'], queryFn: getConsoleStatus, enabled })
|
|
}
|
|
|
|
export function useEnrollConsole() {
|
|
const qc = useQueryClient()
|
|
return useMutation({
|
|
mutationFn: (payload: ConsoleEnrollPayload) => enrollConsole(payload),
|
|
onSuccess: () => {
|
|
qc.invalidateQueries({ queryKey: ['crowdsec-console-status'] })
|
|
},
|
|
})
|
|
}
|
|
|
|
export function useClearConsoleEnrollment() {
|
|
const queryClient = useQueryClient()
|
|
|
|
return useMutation({
|
|
mutationFn: clearConsoleEnrollment,
|
|
onSuccess: () => {
|
|
queryClient.invalidateQueries({ queryKey: ['crowdsec-console-status'] })
|
|
},
|
|
})
|
|
}
|