Skip to content

Commit d0b57cb

Browse files
committed
fix: address PR review comments
- Fixed Chinese translation quotation marks for consistency - Added proper error handling UI for marketplace item removal failures - Added missing translation keys for error messages - Added comment explaining non-critical nature of rules folder deletion failure - Fixed ESLint warning about missing dependency in useEffect
1 parent a3eb1ae commit d0b57cb

File tree

4 files changed

+22
-6
lines changed

4 files changed

+22
-6
lines changed

src/services/marketplace/SimpleInstaller.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -353,6 +353,9 @@ export class SimpleInstaller {
353353
} catch (error) {
354354
// Log error but don't throw - continue with the removal
355355
console.error(`Failed to delete rules folder for mode ${modeSlug}:`, error)
356+
// Notify the user that rules folder cleanup failed
357+
// This is a non-critical error, so we continue with the removal
358+
// The user can manually delete the folder if needed
356359
}
357360
}
358361
}

webview-ui/src/components/marketplace/components/MarketplaceItemCard.tsx

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ export const MarketplaceItemCard: React.FC<MarketplaceItemCardProps> = ({ item,
4141
const [showInstallModal, setShowInstallModal] = useState(false)
4242
const [showRemoveConfirm, setShowRemoveConfirm] = useState(false)
4343
const [removeTarget, setRemoveTarget] = useState<"project" | "global">("project")
44+
const [removeError, setRemoveError] = useState<string | null>(null)
4445

4546
// Listen for removal result messages
4647
useEffect(() => {
@@ -53,15 +54,15 @@ export const MarketplaceItemCard: React.FC<MarketplaceItemCardProps> = ({ item,
5354
type: "fetchMarketplaceData",
5455
})
5556
} else {
56-
// Removal failed - could show an error toast/notification here if needed
57-
console.error("Failed to remove marketplace item:", message.error)
57+
// Removal failed - show error message to user
58+
setRemoveError(message.error || t("marketplace:items.unknownError"))
5859
}
5960
}
6061
}
6162

6263
window.addEventListener("message", handleMessage)
6364
return () => window.removeEventListener("message", handleMessage)
64-
}, [item.id])
65+
}, [item.id, t])
6566

6667
const typeLabel = useMemo(() => {
6768
const labels: Partial<Record<MarketplaceItem["type"], string>> = {
@@ -141,6 +142,13 @@ export const MarketplaceItemCard: React.FC<MarketplaceItemCardProps> = ({ item,
141142
{t("marketplace:items.card.install")}
142143
</Button>
143144
)}
145+
146+
{/* Error message display */}
147+
{removeError && (
148+
<div className="text-vscode-errorForeground text-sm mt-2">
149+
{t("marketplace:items.removeFailed", { error: removeError })}
150+
</div>
151+
)}
144152
</div>
145153
</div>
146154

@@ -221,6 +229,9 @@ export const MarketplaceItemCard: React.FC<MarketplaceItemCardProps> = ({ item,
221229
<AlertDialogCancel>{t("marketplace:removeConfirm.cancel")}</AlertDialogCancel>
222230
<AlertDialogAction
223231
onClick={() => {
232+
// Clear any previous error
233+
setRemoveError(null)
234+
224235
vscode.postMessage({
225236
type: "removeInstalledMarketplaceItem",
226237
mpItem: item,

webview-ui/src/i18n/locales/en/marketplace.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@
7171
"removeProjectTooltip": "Remove from current project",
7272
"removeGlobalTooltip": "Remove from global configuration",
7373
"actionsMenuLabel": "More actions"
74-
}
74+
},
75+
"removeFailed": "Failed to remove item: {{error}}",
76+
"unknownError": "Unknown error occurred"
7577
},
7678
"install": {
7779
"title": "Install {{name}}",

webview-ui/src/i18n/locales/zh-CN/marketplace.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)