refactor(web): extract API error classes to api/errors.ts (#65)

This commit is contained in:
2026-06-08 21:27:21 +02:00
parent a21ab85576
commit c1bddb47c4
3 changed files with 31 additions and 29 deletions
+2 -28
View File
@@ -2,27 +2,9 @@ import { keepPreviousData, useInfiniteQuery, useMutation, useQuery, useQueryClie
import { api } from "./client";
import type { components } from "./schema";
import { HttpError, FieldRejection, InUseError, VisibilityError } from "./errors";
export class HttpError extends Error {
constructor(public readonly status: number) {
super(`HTTP ${status}`);
this.name = "HttpError";
}
}
export class FieldRejection extends Error {
constructor(public readonly field: string, public readonly code: string) {
super(`field rejected: ${field}`);
this.name = "FieldRejection";
}
}
export class InUseError extends Error {
constructor(public readonly count: number) {
super(`in use: ${count}`);
this.name = "InUseError";
}
}
export { HttpError, FieldRejection, InUseError, VisibilityError } from "./errors";
type UserView = components["schemas"]["UserView"];
type LoginRequest = components["schemas"]["LoginRequest"];
@@ -390,14 +372,6 @@ export function useCreateFieldDefinition() {
type Visibility = "draft" | "internal" | "public";
/** Error carrying the HTTP status so callers can branch 422-gate vs 409-illegal. */
export class VisibilityError extends Error {
constructor(public status: number) {
super(`visibility change failed (${status})`);
this.name = "VisibilityError";
}
}
export function useSetVisibility() {
const qc = useQueryClient();