Merge branch 'main' into refactor/ui

# Conflicts:
#	src-tauri/src/services/skill.rs
#	src/components/skills/SkillsPage.tsx
This commit is contained in:
YoVinchen
2025-11-22 00:04:28 +08:00
7 changed files with 314 additions and 23 deletions

View File

@@ -6,6 +6,7 @@ import { toast } from "sonner";
import { SkillCard } from "./SkillCard";
import { RepoManagerPanel } from "./RepoManagerPanel";
import { skillsApi, type Skill, type SkillRepo } from "@/lib/api/skills";
import { formatSkillError } from "@/lib/errors/skillErrorParser";
interface SkillsPageProps {
onClose?: () => void;
@@ -33,10 +34,22 @@ export const SkillsPage = forwardRef<SkillsPageHandle, SkillsPageProps>(
afterLoad(data);
}
} catch (error) {
toast.error(t("skills.loadFailed"), {
description:
error instanceof Error ? error.message : t("common.error"),
const errorMessage =
error instanceof Error ? error.message : String(error);
// 传入 "skills.loadFailed" 作为标题
const { title, description } = formatSkillError(
errorMessage,
t,
"skills.loadFailed",
);
toast.error(title, {
description,
duration: 8000,
});
console.error("Load skills failed:", error);
} finally {
setLoading(false);
}
@@ -66,9 +79,25 @@ export const SkillsPage = forwardRef<SkillsPageHandle, SkillsPageProps>(
toast.success(t("skills.installSuccess", { name: directory }));
await loadSkills();
} catch (error) {
toast.error(t("skills.installFailed"), {
description:
error instanceof Error ? error.message : t("common.error"),
const errorMessage =
error instanceof Error ? error.message : String(error);
// 使用错误解析器格式化错误,传入 "skills.installFailed"
const { title, description } = formatSkillError(
errorMessage,
t,
"skills.installFailed",
);
toast.error(title, {
description,
duration: 10000, // 延长显示时间让用户看清
});
console.error("Install skill failed:", {
directory,
error,
message: errorMessage,
});
}
};
@@ -79,9 +108,25 @@ export const SkillsPage = forwardRef<SkillsPageHandle, SkillsPageProps>(
toast.success(t("skills.uninstallSuccess", { name: directory }));
await loadSkills();
} catch (error) {
toast.error(t("skills.uninstallFailed"), {
description:
error instanceof Error ? error.message : t("common.error"),
const errorMessage =
error instanceof Error ? error.message : String(error);
// 使用错误解析器格式化错误,传入 "skills.uninstallFailed"
const { title, description } = formatSkillError(
errorMessage,
t,
"skills.uninstallFailed",
);
toast.error(title, {
description,
duration: 10000,
});
console.error("Uninstall skill failed:", {
directory,
error,
message: errorMessage,
});
}
};