Skip to content

Commit 475b666

Browse files
committed
refactor: robustly compare versions
1 parent 5ba2ae7 commit 475b666

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/renderer/managers/updater.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
import semver from "semver";
21
import { i18n } from "@common";
2+
import semver from "semver";
33
import type { RepluggedPlugin, RepluggedTheme } from "src/types";
44
import type { AnyAddonManifest, RepluggedEntity } from "src/types/addon";
55
import notices from "../apis/notices";
@@ -65,11 +65,15 @@ const updaterState = init<Record<string, UpdateSettings>>("dev.replugged.Updater
6565

6666
const completedUpdates = new Set<string>();
6767

68-
function isUpToDate({ local, remote }: { local: string; remote: string }): boolean {
68+
function isUpToDate(local: string, remote: string): boolean {
6969
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);
7377
}
7478

7579
export function getUpdateState(id: string): UpdateSettings | null {
@@ -144,7 +148,7 @@ export async function checkUpdate(id: string, verbose = true): Promise<void> {
144148

145149
const newVersion = res.manifest.version;
146150

147-
if (isUpToDate({ remote: newVersion, local: version })) {
151+
if (isUpToDate(version, newVersion)) {
148152
if (verbose) logger.log(`Entity ${id} is up to date`);
149153
updaterState.set(id, {
150154
available: false,

0 commit comments

Comments
 (0)