From 513ac754ae70c22f8fbf4104fd79d4832b156102 Mon Sep 17 00:00:00 2001 From: OrigamingWasTaken <74014262+OrigamingWasTaken@users.noreply.github.com> Date: Tue, 8 Oct 2024 18:34:27 +0200 Subject: [PATCH] Switch to "semver-compare" lib for semantic versioning --- bun.lockb | Bin 169956 -> 170700 bytes .../windows/main/components/Updater.svelte | 10 +++---- frontend/src/windows/main/ts/utils.ts | 26 ------------------ package.json | 2 ++ 4 files changed, 7 insertions(+), 31 deletions(-) diff --git a/bun.lockb b/bun.lockb index 6d803ae2a3a51c92a027b24bb209b0aeac518abe..0762783c2966dcba6524a0958aa45abafe91c1df 100755 GIT binary patch delta 30285 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 diff --git a/frontend/src/windows/main/components/Updater.svelte b/frontend/src/windows/main/components/Updater.svelte index da665af..b009920 100644 --- a/frontend/src/windows/main/components/Updater.svelte +++ b/frontend/src/windows/main/components/Updater.svelte @@ -6,16 +6,17 @@ import { toast } from 'svelte-sonner'; import { version } from '../../../../../package.json'; import { loadSettings, saveSettings } from './settings'; - import { compareVersions, curlGet } from '../ts/utils'; + import { curlGet } from '../ts/utils'; import Link from './Link.svelte'; import { shell } from '../ts/tools/shell'; + import compare from 'semver-compare'; let showUpdatePopup = false; let updateVersion = version; let body = ''; async function checkForUpdate() { - const checkWifi = await shell(`if [[ "$(networksetup -getairportnetwork en0 | grep -o 'Current Wi-Fi Network:')" != "" ]]; then echo "true"; else echo "false"; fi`,[],{completeCommand: true}); + const checkWifi = await shell(`if ping -c 1 -W 1 8.8.8.8 &> /dev/null; then echo "true"; else echo "false"; fi`,[],{completeCommand: true}); if (!checkWifi.stdOut.includes('true')) { toast.error('Could not connect to internet'); return; @@ -26,14 +27,13 @@ }); if (releases.message) return; for (const re of releases) { - if (compareVersions(re.tag_name, updateVersion) > 0) { + if (compare(re.tag_name, updateVersion) === 1) { updateVersion = re.tag_name; body = re.body; } } if (updateVersion === version) return; - const compare = compareVersions(updateVersion, version); - if (compare > 0) { + if (compare(updateVersion, version) === 1) { console.info(`[Updater] A new release is available: ${updateVersion}`); const settings = await loadSettings('updating'); if (settings) { diff --git a/frontend/src/windows/main/ts/utils.ts b/frontend/src/windows/main/ts/utils.ts index f908291..d157842 100644 --- a/frontend/src/windows/main/ts/utils.ts +++ b/frontend/src/windows/main/ts/utils.ts @@ -34,32 +34,6 @@ export async function curlGet(url: string): Promise { return res; } -/** - * Compare two semantic version strings. - * - * @param {string} v1 - The first version string. - * @param {string} v2 - The second version string. - * @returns {number} -1 if v1 < v2, 1 if v1 > v2, 0 if they are equal. - */ -export function compareVersions(v1: string, v2: string): number { - const v1Parts: number[] = v1.split('.').map(Number); - const v2Parts: number[] = v2.split('.').map(Number); - - for (let i = 0; i < Math.max(v1Parts.length, v2Parts.length); i++) { - const v1Part: number = v1Parts[i] || 0; - const v2Part: number = v2Parts[i] || 0; - - if (v1Part > v2Part) { - return 1; - } - if (v1Part < v2Part) { - return -1; - } - } - - return 0; -} - export function sleep(ms = 0) { return new Promise((resolve) => setTimeout(resolve, ms)); } diff --git a/package.json b/package.json index e1f2561..5efd447 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@sveltejs/vite-plugin-svelte": "^3.0.2", "@tsconfig/svelte": "^5.0.2", "@types/path-browserify": "^1.0.2", + "@types/semver-compare": "^1.0.3", "@types/signale": "^1.4.7", "@types/tar": "^6.1.11", "autoprefixer": "^10.4.19", @@ -55,6 +56,7 @@ "lucide-svelte": "^0.446.0", "mode-watcher": "^0.3.1", "path-browserify": "^1.0.1", + "semver-compare": "^1.0.0", "svelte-markdown": "^0.4.1", "svelte-sonner": "^0.3.21", "tailwind-merge": "^2.5.2",