From 6dd5e1e080b1e8c00dfd767e244bc068d2ef450a Mon Sep 17 00:00:00 2001 From: FuShang114 <18500350168@163.com> Date: Fri, 26 Jun 2026 22:12:29 +0800 Subject: [PATCH] fix: prevent plugin detail marketplace mismatches (#9028) --- dashboard/src/views/ExtensionPage.vue | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/dashboard/src/views/ExtensionPage.vue b/dashboard/src/views/ExtensionPage.vue index 6c07d7d60..45e75d901 100644 --- a/dashboard/src/views/ExtensionPage.vue +++ b/dashboard/src/views/ExtensionPage.vue @@ -181,16 +181,30 @@ const selectedInstalledPlugin = computed(() => { return data.find((plugin) => plugin.name === selectedPluginId.value) || null; }); +const normalizeRepoUrl = (value) => + String(value || "") + .trim() + .replace(/\/+$/, "") + .toLowerCase() + .replace(/\.git$/, ""); + const selectedMarketPlugin = computed(() => { const market = Array.isArray(pluginMarketData.value) ? pluginMarketData.value : []; const installedPlugin = selectedInstalledPlugin.value; - const repo = installedPlugin?.repo?.toLowerCase(); + const marketNameMatch = + market.find((item) => item.name === selectedPluginId.value) || null; + + if (selectedDetailTab.value === "market" || !installedPlugin) { + return marketNameMatch; + } + + const repo = normalizeRepoUrl(installedPlugin.repo); + if (!repo) return null; + return ( - market.find((item) => item.name === selectedPluginId.value) || - market.find((item) => repo && item.repo?.toLowerCase() === repo) || - null + market.find((item) => normalizeRepoUrl(item?.repo) === repo) || null ); });