fix(update-center): cascade local and remote icon fallbacks

Keep update list icons from dropping straight to placeholders by retrying the remote store icon after local load failures. Align the update-center IPC and renderer types with the split local/remote icon contract.
This commit is contained in:
2026-04-11 11:41:01 +08:00
parent c16ba5536f
commit 180b88b5c0
11 changed files with 245 additions and 79 deletions

View File

@@ -181,21 +181,31 @@ export const buildRemoteFallbackIconUrl = ({
return `${baseUrl}/${storeArch}/${category}/${pkgname}/icon.png`;
};
export const resolveUpdateItemIcon = (item: UpdateCenterItem): string => {
export const resolveUpdateItemIcons = (
item: UpdateCenterItem,
): Pick<UpdateCenterItem, "localIcon" | "remoteIcon"> => {
const localIcon =
item.source === "aptss"
? resolveDesktopIcon(item.pkgname)
: resolveApmIcon(item.pkgname);
if (localIcon) {
return localIcon;
const remoteIcon = buildRemoteFallbackIconUrl({
pkgname: item.pkgname,
source: item.source,
arch: item.arch,
category: item.category,
});
if (localIcon && remoteIcon) {
return { localIcon, remoteIcon };
}
return (
buildRemoteFallbackIconUrl({
pkgname: item.pkgname,
source: item.source,
arch: item.arch,
category: item.category,
}) || ""
);
if (localIcon) {
return { localIcon };
}
if (remoteIcon) {
return { remoteIcon };
}
return {};
};