feat(error): 新增系统重试提示
This commit is contained in:
parent
184355d6bf
commit
e285e105ef
|
|
@ -4,6 +4,15 @@ import type { Model } from "./types";
|
||||||
|
|
||||||
export async function loadModels() {
|
export async function loadModels() {
|
||||||
const res = await fetch(`${getBackendBaseURL()}/api/models`);
|
const res = await fetch(`${getBackendBaseURL()}/api/models`);
|
||||||
|
|
||||||
|
if (res.status >= 500 && res.status < 600) {
|
||||||
|
throw new Error(`Server error: ${res.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!res.ok) {
|
||||||
|
throw new Error(`HTTP error: ${res.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
const { models } = (await res.json()) as { models: Model[] };
|
const { models } = (await res.json()) as { models: Model[] };
|
||||||
return models;
|
return models;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,34 @@
|
||||||
import { useQuery } from "@tanstack/react-query";
|
import { useQuery } from "@tanstack/react-query";
|
||||||
|
import { useEffect } from "react";
|
||||||
|
import { toast } from "sonner";
|
||||||
|
|
||||||
import { loadModels } from "./api";
|
import { loadModels } from "./api";
|
||||||
|
import type { Model } from "./types";
|
||||||
|
|
||||||
export function useModels({ enabled = true }: { enabled?: boolean } = {}) {
|
export function useModels({ enabled = true }: { enabled?: boolean } = {}) {
|
||||||
const { data, isLoading, error } = useQuery({
|
const { data, isLoading, error } = useQuery<Model[], Error>({
|
||||||
queryKey: ["models"],
|
queryKey: ["models"],
|
||||||
queryFn: () => loadModels(),
|
queryFn: () => loadModels(),
|
||||||
enabled,
|
enabled,
|
||||||
refetchOnWindowFocus: false,
|
refetchOnWindowFocus: false,
|
||||||
|
retry: (failureCount, queryError) => {
|
||||||
|
if (queryError.message.startsWith("HTTP error: 4")) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return failureCount < 1;
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
// React Query v5 removed per-query onError callbacks from useQuery options.
|
||||||
|
if (error?.message.includes("Server error: 5")) {
|
||||||
|
toast.error("系统正在更新-5,请稍候……");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (error?.message.includes("HTTP error: 4")) {
|
||||||
|
toast.error("模型接口不可用,请检查后端路由或服务状态。");
|
||||||
|
}
|
||||||
|
}, [error]);
|
||||||
|
|
||||||
return { models: data ?? [], isLoading, error };
|
return { models: data ?? [], isLoading, error };
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue