Files
dockhand/lib/utils/version.ts
Jarek Krochmalski 62e3c6439e Initial commit
2025-12-28 21:16:03 +01:00

36 lines
1.0 KiB
TypeScript

/**
* Compares two semantic version strings.
* @returns -1 if v1 < v2, 0 if equal, 1 if v1 > v2
*/
export function compareVersions(v1: string, v2: string): number {
const normalize = (v: string) =>
v
.replace(/^v/, '')
.split('.')
.map(Number);
const parts1 = normalize(v1);
const parts2 = normalize(v2);
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 1;
if (p1 < p2) return -1;
}
return 0;
}
/**
* Determines if the "What's New" popup should be shown.
* @param currentVersion - The current app version (from git tag)
* @param lastSeenVersion - The last version the user has seen (from localStorage)
*/
export function shouldShowWhatsNew(
currentVersion: string | null,
lastSeenVersion: string | null
): boolean {
if (!currentVersion || currentVersion === 'unknown') return false;
if (!lastSeenVersion) return true; // Never seen any version
return compareVersions(currentVersion, lastSeenVersion) > 0;
}