From ebf407e46befed8478c58919bd2587aae5bf6727 Mon Sep 17 00:00:00 2001 From: Jason Date: Sat, 7 Mar 2026 21:45:54 +0800 Subject: [PATCH] fix: get real skill count by awaiting discovery after adding repo MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The previous approach computed count before discovery, so it was always 0. Now we await refetchDiscoverable() after the mutation, then filter the fresh skills list to get the actual count for the toast message. Also reverts the SkillRepo.count field — keep the interface clean since count is a transient UI concern, not a data model property. --- src/components/skills/RepoManager.tsx | 6 +----- src/components/skills/RepoManagerPanel.tsx | 6 +----- src/components/skills/SkillsPage.tsx | 11 ++++++++++- src/lib/api/skills.ts | 1 - 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/src/components/skills/RepoManager.tsx b/src/components/skills/RepoManager.tsx index 83e110782..69fee8d9f 100644 --- a/src/components/skills/RepoManager.tsx +++ b/src/components/skills/RepoManager.tsx @@ -74,15 +74,11 @@ export function RepoManager({ } try { - const repoToAdd: SkillRepo = { + await onAdd({ owner: parsed.owner, name: parsed.name, branch: branch || "main", enabled: true, - }; - await onAdd({ - ...repoToAdd, - count: getSkillCount(repoToAdd), }); setRepoUrl(""); diff --git a/src/components/skills/RepoManagerPanel.tsx b/src/components/skills/RepoManagerPanel.tsx index 4cb28b5f4..a264d6d2f 100644 --- a/src/components/skills/RepoManagerPanel.tsx +++ b/src/components/skills/RepoManagerPanel.tsx @@ -61,15 +61,11 @@ export function RepoManagerPanel({ } try { - const repoToAdd: SkillRepo = { + await onAdd({ owner: parsed.owner, name: parsed.name, branch: branch || "main", enabled: true, - }; - await onAdd({ - ...repoToAdd, - count: getSkillCount(repoToAdd), }); setRepoUrl(""); diff --git a/src/components/skills/SkillsPage.tsx b/src/components/skills/SkillsPage.tsx index c26e634ac..0bdcd3b4c 100644 --- a/src/components/skills/SkillsPage.tsx +++ b/src/components/skills/SkillsPage.tsx @@ -164,11 +164,20 @@ export const SkillsPage = forwardRef( const handleAddRepo = async (repo: SkillRepo) => { try { await addRepoMutation.mutateAsync(repo); + // Await discovery so we can report the real count + const { data: freshSkills } = await refetchDiscoverable(); + const count = + freshSkills?.filter( + (s) => + s.repoOwner === repo.owner && + s.repoName === repo.name && + (s.repoBranch || "main") === (repo.branch || "main"), + ).length ?? 0; toast.success( t("skills.repo.addSuccess", { owner: repo.owner, name: repo.name, - count: repo.count || 0, + count, }), { closeButton: true }, ); diff --git a/src/lib/api/skills.ts b/src/lib/api/skills.ts index 1f6bc1d9c..151090773 100644 --- a/src/lib/api/skills.ts +++ b/src/lib/api/skills.ts @@ -67,7 +67,6 @@ export interface SkillRepo { name: string; branch: string; enabled: boolean; - count?: number; } // ========== API ==========