/** * Compare two version strings. * Returns true if 'latest' is greater than 'current' (an update is available). */ export const isUpdateAvailable = (currentVersion: string | undefined, latestVersion: string) => { if (!currentVersion || !latestVersion) return false; // Split strings into an array of numbers: "1.2.10" -> [1, 2, 10] const currentParts = currentVersion.split('.').map(Number); const latestParts = latestVersion.split('.').map(Number); const maxLength = Math.max(currentParts.length, latestParts.length); for (let i = 0; i < maxLength; i++) { // If a part is missing, we consider it as 0 (e.g. "1.0" -> [1, 0, 0]) const current = currentParts[i] || 0; const latest = latestParts[i] || 0; if (current < latest) { return true; // It needs an update } if (current > latest) { return false; } } return false; };