diff --git a/src/components/providers/ProviderList.tsx b/src/components/providers/ProviderList.tsx index 62edad709..dbb6be0ea 100644 --- a/src/components/providers/ProviderList.tsx +++ b/src/components/providers/ProviderList.tsx @@ -20,6 +20,7 @@ import { toast } from "sonner"; import type { Provider } from "@/types"; import type { AppId } from "@/lib/api"; import { providersApi } from "@/lib/api/providers"; +import { extractErrorMessage } from "@/utils/errorUtils"; import { useDragSort } from "@/hooks/useDragSort"; import { useOpenClawLiveProviderIds, @@ -239,8 +240,13 @@ export function ProviderList({ toast.info(t("provider.noProviders")); } }, - onError: (error: Error) => { - toast.error(error.message); + onError: (error: unknown) => { + // Tauri invoke 的 reject 值是后端序列化出的纯字符串而非 Error 对象, + // 取 .message 只会得到 undefined(空 toast)。 + toast.error(extractErrorMessage(error) || t("settings.importFailed")); + // 导入失败前也可能已产生需要上屏的副作用:GrokBuild 官方登录态下点 + // 导入,命令层会先补种官方条目、随后才因 live 不可导入而报错。 + queryClient.invalidateQueries({ queryKey: ["providers", appId] }); }, });