|
1 | | -import semver from "semver"; |
2 | 1 | import { i18n } from "@common"; |
| 2 | +import semver from "semver"; |
3 | 3 | import type { RepluggedPlugin, RepluggedTheme } from "src/types"; |
4 | 4 | import type { AnyAddonManifest, RepluggedEntity } from "src/types/addon"; |
5 | 5 | import notices from "../apis/notices"; |
@@ -65,11 +65,15 @@ const updaterState = init<Record<string, UpdateSettings>>("dev.replugged.Updater |
65 | 65 |
|
66 | 66 | const completedUpdates = new Set<string>(); |
67 | 67 |
|
68 | | -function isUpToDate({ local, remote }: { local: string; remote: string }): boolean { |
| 68 | +function isUpToDate(local: string, remote: string): boolean { |
69 | 69 | if (local === remote) return true; |
70 | | - const localVersion = semver.clean(local)!; |
71 | | - const remoteVersion = semver.clean(remote)!; |
72 | | - return semver.compare(localVersion, remoteVersion) !== -1; |
| 70 | + |
| 71 | + const localVersion = semver.clean(local) ?? semver.coerce(local)?.version ?? null; |
| 72 | + const remoteVersion = semver.clean(remote) ?? semver.coerce(remote)?.version ?? null; |
| 73 | + |
| 74 | + if (!localVersion || !remoteVersion) return false; |
| 75 | + |
| 76 | + return semver.gte(localVersion, remoteVersion); |
73 | 77 | } |
74 | 78 |
|
75 | 79 | export function getUpdateState(id: string): UpdateSettings | null { |
@@ -144,7 +148,7 @@ export async function checkUpdate(id: string, verbose = true): Promise<void> { |
144 | 148 |
|
145 | 149 | const newVersion = res.manifest.version; |
146 | 150 |
|
147 | | - if (isUpToDate({ remote: newVersion, local: version })) { |
| 151 | + if (isUpToDate(version, newVersion)) { |
148 | 152 | if (verbose) logger.log(`Entity ${id} is up to date`); |
149 | 153 | updaterState.set(id, { |
150 | 154 | available: false, |
|
0 commit comments