mirror of
https://github.com/shankar0123/certctl.git
synced 2026-06-07 18:41:30 +00:00
fix: handle 204 No Content in fetchJSON, add FK-aware delete errors, v2 screenshots
Frontend: fetchJSON now returns empty object on 204 instead of failing to parse empty body — fixes silent delete failures across all entities. Added onError callbacks to owner/team delete mutations to surface errors. Backend: owner and issuer delete handlers return 409 Conflict with descriptive messages when FK constraints block deletion, instead of generic 500. Added 15 v2 dashboard screenshots, updated README screenshot section, logo asset, page count references (18→full), and QA guide with FK constraint test coverage. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -42,6 +42,7 @@ async function fetchJSON<T>(url: string, init?: RequestInit): Promise<T> {
|
||||
}
|
||||
throw new Error(errorMsg || `HTTP ${res.status}`);
|
||||
}
|
||||
if (res.status === 204) return {} as T;
|
||||
return res.json();
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ export default function OwnersPage() {
|
||||
const deleteMutation = useMutation({
|
||||
mutationFn: deleteOwner,
|
||||
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['owners'] }),
|
||||
onError: (err: Error) => alert(`Delete failed: ${err.message}`),
|
||||
});
|
||||
|
||||
const teamMap = new Map<string, Team>();
|
||||
|
||||
@@ -18,6 +18,7 @@ export default function TeamsPage() {
|
||||
const deleteMutation = useMutation({
|
||||
mutationFn: deleteTeam,
|
||||
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['teams'] }),
|
||||
onError: (err: Error) => alert(`Delete failed: ${err.message}`),
|
||||
});
|
||||
|
||||
const columns: Column<Team>[] = [
|
||||
|
||||
Reference in New Issue
Block a user