fix(frontend,plugins): évite le crash sur install/uninstall/reinstall par rechargement systématique de la liste (#120)
- usePlugins.ts: remplace les mises à jour optimistes du state par des appels listPlugins() après chaque opération backend - PluginsPanel.tsx: ajoute la normalisation isInstallable() pour éviter les crashes si installable est undefined - Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@ -217,11 +217,13 @@ export function PluginsPanel() {
|
||||
<ConfirmDialog
|
||||
title={`Installer "${installFlow.review.displayName}" ?`}
|
||||
body={reviewSummary(installFlow.review)}
|
||||
confirmLabel={installFlow.review.installable ? "Installer" : "Corriger avant d'installer"}
|
||||
confirmLabel={
|
||||
isInstallable(installFlow.review) ? "Installer" : "Corriger avant d'installer"
|
||||
}
|
||||
busy={vm.busy}
|
||||
danger={!installFlow.review.installable}
|
||||
danger={!isInstallable(installFlow.review)}
|
||||
onConfirm={() => {
|
||||
if (installFlow.review.installable) void confirmInstall();
|
||||
if (isInstallable(installFlow.review)) void confirmInstall();
|
||||
else setInstallFlow(null);
|
||||
}}
|
||||
onCancel={() => setInstallFlow(null)}
|
||||
@ -259,7 +261,13 @@ function reviewSummary(review: PluginReview): string {
|
||||
review.description ?? null,
|
||||
`Confiance : full-trust — ce plugin peut exécuter du code arbitraire dans IdeA.`,
|
||||
`Contributions : ${c.topLevelMenus} menu(s), ${c.menuItems} item(s), ${c.layouts} layout(s), ${c.mcpServers} serveur(s) MCP.`,
|
||||
...review.issues.map((i) => `${i.severity === "error" ? "Erreur" : "Avertissement"} : ${i.message}`),
|
||||
...(review.issues ?? []).map(
|
||||
(i) => `${i.severity === "error" ? "Erreur" : "Avertissement"} : ${i.message}`,
|
||||
),
|
||||
].filter((p): p is string => Boolean(p));
|
||||
return parts.join("\n");
|
||||
}
|
||||
|
||||
function isInstallable(review: PluginReview): boolean {
|
||||
return review.installable ?? true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user