diff --git a/src/community.js b/src/community.js index 4c3078bf2..8b0c8541a 100644 --- a/src/community.js +++ b/src/community.js @@ -32,7 +32,7 @@ async function getAppVersion(url, version) { if (versionsError) throw new BoxError(BoxError.EXTERNAL_ERROR, `Invalid CloudronVersions.json: ${versionsError.message}`); const versions = versionsRoot.versions; - const sortedVersions = Object.keys(versions).sort(manifestFormat.packageVersionCompare); + const sortedVersions = Object.keys(versions).filter(v => versions[v].publishState !== 'revoked').sort(manifestFormat.packageVersionCompare); const versionData = version === 'latest' ? versions[sortedVersions.at(-1)] : versions[version]; if (!versionData) throw new BoxError(BoxError.NOT_FOUND, `Version ${version} not found`); @@ -67,7 +67,7 @@ async function downloadManifest(versionsUrl) { if (versionsError) throw new BoxError(BoxError.EXTERNAL_ERROR, `Invalid CloudronVersions.json: ${versionsError.message}`); const versions = versionsRoot.versions; - const sortedVersions = Object.keys(versions).sort(manifestFormat.packageVersionCompare); + const sortedVersions = Object.keys(versions).filter(v => versions[v].publishState !== 'revoked').sort(manifestFormat.packageVersionCompare); const versionData = version === 'latest' ? versions[sortedVersions.at(-1)] : versions[version]; if (!versionData) throw new BoxError(BoxError.NOT_FOUND, `Version ${version} not found`); @@ -91,9 +91,9 @@ async function getAppUpdate(app, options) { if (versionsError) throw new BoxError(BoxError.EXTERNAL_ERROR, `Invalid CloudronVersions.json: ${versionsError.message}`); const versions = versionsRoot.versions; - const sortedVersions = Object.keys(versions).sort(manifestFormat.packageVersionCompare); + const sortedVersions = Object.keys(versions).filter(v => versions[v].publishState !== 'revoked').sort(manifestFormat.packageVersionCompare); const idx = sortedVersions.findIndex(v => v === app.manifest.version); - if (idx === -1) throw new BoxError(BoxError.EXTERNAL_ERROR, 'No such version'); + if (idx === -1) return null; // current version was revoked or not found, no update info available if (idx === sortedVersions.length-1) return null; // no update const nextVersion = versions[sortedVersions[idx+1]]; const unstable = !versionsRoot.stable || nextVersion.publishState !== 'published';