Files
rustfs-console/lib/api-error-handler.ts
T
overtrue a7391a10d3 refactor: component structure and naming
- Fix spelling: auth/heros -> auth/heroes, AuthHerosStatic -> AuthHeroStatic
- Rename redundant: TaskTaskPanel/Item -> TaskPanel/TaskItem; buckets-info/new-form -> bucket-info/bucket-new-form; PoliciesFormItem -> PolicyForm
- Drop directory prefix in filenames: bucket-info.tsx -> info.tsx under buckets/, same for user/, object/, events/, etc.
- Move change-password from access-keys/ to user/; move user-dropdown, user-selector to user/; bucket-selector to buckets/
- Extract tasks to components/tasks/ (item, panel, stats-button)
- Remove unused component-example.tsx and example.tsx
- Rename lib/ui to lib/feedback (message, dialog); move api-error-handler from lib/utils/ to lib/
- Update AGENTS.md with component naming rules and lib/feedback vs components/ui
2026-02-01 22:14:09 +08:00

56 lines
1.2 KiB
TypeScript

import type {
ApiErrorHandlerCallback,
IApiErrorHandler,
} from "@/types/api"
export class ApiErrorHandler implements IApiErrorHandler {
private onUnauthorized?: ApiErrorHandlerCallback
private onForbidden?: ApiErrorHandlerCallback
private onServerError?: ApiErrorHandlerCallback
constructor(callbacks?: {
onUnauthorized?: ApiErrorHandlerCallback
onForbidden?: ApiErrorHandlerCallback
onServerError?: ApiErrorHandlerCallback
}) {
this.onUnauthorized = callbacks?.onUnauthorized
this.onForbidden = callbacks?.onForbidden
this.onServerError = callbacks?.onServerError
}
async handle401(): Promise<void> {
if (this.onUnauthorized) {
await this.onUnauthorized()
}
}
async handle403(): Promise<void> {
if (this.onForbidden) {
await this.onForbidden()
}
}
async handleServerError(): Promise<void> {
if (this.onServerError) {
await this.onServerError()
}
}
async handleByStatus(status: number): Promise<void> {
switch (status) {
case 401:
await this.handle401()
break
case 403:
await this.handle403()
break
case 500:
case 502:
case 503:
case 504:
await this.handleServerError()
break
}
}
}