feat: improve version comparison logic in useVersionCheck hook

This commit is contained in:
Haileyesus
2026-02-05 21:33:44 +03:00
parent 1ed3358cbd
commit f40c376ef5

View File

@@ -1,7 +1,26 @@
// hooks/useVersionCheck.js
import { useState, useEffect } from 'react';
import { version } from '../../package.json';
/**
* Compare two semantic version strings
* Works only with numeric versions separated by dots (e.g. "1.2.3")
* @param {string} v1
* @param {string} v2
* @returns positive if v1 > v2, negative if v1 < v2, 0 if equal
*/
const compareVersions = (v1, v2) => {
const parts1 = v1.split('.').map(Number);
const parts2 = v2.split('.').map(Number);
for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
const p1 = parts1[i] || 0;
const p2 = parts2[i] || 0;
if (p1 !== p2) return p1 - p2;
}
return 0;
};
export const useVersionCheck = (owner, repo) => {
const [updateAvailable, setUpdateAvailable] = useState(false);
const [latestVersion, setLatestVersion] = useState(null);
@@ -17,7 +36,8 @@ export const useVersionCheck = (owner, repo) => {
if (data.tag_name) {
const latest = data.tag_name.replace(/^v/, '');
setLatestVersion(latest);
setUpdateAvailable(version !== latest);
// Only show update if latest version is actually newer
setUpdateAvailable(compareVersions(latest, version) > 0);
// Store release information
setReleaseInfo({