From 9c29a3ebbeba51dee1e217e5fc281e3a542b1d4e Mon Sep 17 00:00:00 2001 From: Christian Kellner Date: Fri, 26 Sep 2025 10:22:27 +0200 Subject: [PATCH] fixing comparing versions --- lib/api/routes/versionRouter.js | 19 ++----------------- package.json | 1 + 2 files changed, 3 insertions(+), 17 deletions(-) diff --git a/lib/api/routes/versionRouter.js b/lib/api/routes/versionRouter.js index c42ee55..4a685e6 100644 --- a/lib/api/routes/versionRouter.js +++ b/lib/api/routes/versionRouter.js @@ -1,26 +1,11 @@ import restana from 'restana'; import fetch from 'node-fetch'; import { getPackageVersion } from '../../utils.js'; +import semver from 'semver'; const service = restana(); const versionRouter = service.newRouter(); -/** - * Converts a dotted numeric string (e.g., '12.2.1.2') into a single integer (e.g., 12212). - * Null safe: returns null for null/undefined/empty or non-numeric input. - * Non-digits are removed; separators like '.' or '-' are ignored. - * - * @param {string|number|null|undefined} input - * @returns {number|null} - */ -const toCompactNumber = (input) => { - if (input == null) return null; - const joined = String(input).match(/\d+/g)?.join('') ?? ''; - if (joined === '') return null; - const n = Number(joined); - return Number.isFinite(n) ? n : null; -}; - versionRouter.get('/', async (req, res) => { const versionPayload = await getCurrentVersionFromGithub(); res.body = versionPayload == null ? { newVersion: false } : versionPayload; @@ -31,7 +16,7 @@ async function getCurrentVersionFromGithub() { const raw = await fetch('https://api.github.com/repos/orangecoding/fredy/releases/latest'); const data = await raw.json(); const localFredyVersion = await getPackageVersion(); - if (data.tag_name == null || toCompactNumber(localFredyVersion) >= toCompactNumber(data.tag_name)) { + if (data.tag_name == null || semver.gte(localFredyVersion, data.tag_name)) { return null; } return { diff --git a/package.json b/package.json index 2f36ee8..6e698ea 100755 --- a/package.json +++ b/package.json @@ -85,6 +85,7 @@ "react-router": "7.9.2", "react-router-dom": "7.9.2", "restana": "5.1.0", + "semver": "^7.7.2", "serve-static": "2.2.0", "slack": "11.0.2", "vite": "7.1.7",