fix(marketplace): use external icon URL when icon field is absolute

Many MCP / skill records store their icon as an absolute external URL
(simpleicons.org / iconify.design) rather than an uploaded file, so the
/resources/icon endpoint 404s and the card icon breaks. Add
resolveMarketplaceIconURL() which prefers an absolute http(s) icon field
and otherwise falls back to the resources endpoint.
This commit is contained in:
RockChinQ
2026-06-06 03:52:09 -04:00
parent f54ae4b91c
commit dff80a0c0a
4 changed files with 44 additions and 18 deletions
+7 -5
View File
@@ -184,11 +184,12 @@ function AddExtensionContent() {
const cloud = getCloudServiceClientSync();
const a = installInfo.plugin_author || '';
const n = installInfo.plugin_name || '';
if (installExtensionType === 'mcp')
return cloud.getMCPMarketplaceIconURL(a, n);
if (installExtensionType === 'skill')
return cloud.getSkillMarketplaceIconURL(a, n);
return cloud.getPluginIconURL(a, n);
return cloud.resolveMarketplaceIconURL(
installExtensionType,
a,
n,
installInfo.plugin_icon,
);
})();
const [popoverOpen, setPopoverOpen] = useState(false);
@@ -326,6 +327,7 @@ function AddExtensionContent() {
plugin_version: plugin.latest_version,
plugin_label: extractI18nObject(plugin.label) || plugin.name,
plugin_description: extractI18nObject(plugin.description) || '',
plugin_icon: plugin.icon || '',
});
setInstallExtensionType(plugin.type || 'plugin');
setPluginInstallStatus(PluginInstallStatus.ASK_CONFIRM);