Add version check

This commit is contained in:
Djuri Baars 2024-06-09 01:54:33 +02:00
parent 5b3a071284
commit 2b2c8e7fc7
5 changed files with 79 additions and 4 deletions

View file

@ -65,7 +65,12 @@
"fileUploadSuccess": "Datei erfolgreich hochgeladen, Gerät neu gestartet. WebUI in {countdown} Sekunden neu geladen", "fileUploadSuccess": "Datei erfolgreich hochgeladen, Gerät neu gestartet. WebUI in {countdown} Sekunden neu geladen",
"fileUploadFailed": "Das Hochladen der Datei ist fehlgeschlagen. \nStellen Sie sicher, dass Sie die richtige Datei ausgewählt haben, und versuchen Sie es erneut.", "fileUploadFailed": "Das Hochladen der Datei ist fehlgeschlagen. \nStellen Sie sicher, dass Sie die richtige Datei ausgewählt haben, und versuchen Sie es erneut.",
"uploading": "Hochladen", "uploading": "Hochladen",
"firmwareUpdateText": "Wenn Sie die Firmware-Upload-Funktion verwenden, stellen Sie sicher, dass Sie die richtigen Dateien verwenden. \nDas Hochladen der falschen Dateien kann dazu führen, dass das Gerät nicht mehr funktioniert. \nWenn es schief geht, können Sie die Firmware wiederherstellen, indem Sie das vollständige Image hochladen, nachdem Sie das Gerät in den BOOT-Modus versetzt haben." "firmwareUpdateText": "Wenn Sie die Firmware-Upload-Funktion verwenden, stellen Sie sicher, dass Sie die richtigen Dateien verwenden. \nDas Hochladen der falschen Dateien kann dazu führen, dass das Gerät nicht mehr funktioniert. \nWenn es schief geht, können Sie die Firmware wiederherstellen, indem Sie das vollständige Image hochladen, nachdem Sie das Gerät in den BOOT-Modus versetzt haben.",
"swUpToDate": "Du hast die neueste Version.",
"swUpdateAvailable": "Eine neuere Version ist verfügbar!",
"latestVersion": "Letzte Version",
"releaseDate": "Veröffentlichungsdatum",
"viewRelease": "Veröffentlichung anzeigen"
} }
}, },
"colors": { "colors": {

View file

@ -67,7 +67,12 @@
"fileUploadFailed": "File upload failed. Make sure you have selected the correct file and try again.", "fileUploadFailed": "File upload failed. Make sure you have selected the correct file and try again.",
"fileUploadSuccess": "File uploaded successfully, restarting device and reloading WebUI in {countdown} seconds", "fileUploadSuccess": "File uploaded successfully, restarting device and reloading WebUI in {countdown} seconds",
"uploading": "Uploading", "uploading": "Uploading",
"firmwareUpdateText": "When you use the firmware upload functionality, make sure you use the correct files. Uploading the wrong files can result in a non-working device. If it goes wrong, you can restore firmware by uploading the full image after setting the device in BOOT-mode." "firmwareUpdateText": "When you use the firmware upload functionality, make sure you use the correct files. Uploading the wrong files can result in a non-working device. If it goes wrong, you can restore firmware by uploading the full image after setting the device in BOOT-mode.",
"swUpdateAvailable": "A newer version is available!",
"swUpToDate": "You are up to date.",
"latestVersion": "Latest Version",
"releaseDate": "Release Date",
"viewRelease": "View Release"
} }
}, },
"colors": { "colors": {

View file

@ -64,7 +64,12 @@
"fileUploadSuccess": "Archivo cargado exitosamente, reiniciando el dispositivo. Recargando WebUI en {countdown} segundos", "fileUploadSuccess": "Archivo cargado exitosamente, reiniciando el dispositivo. Recargando WebUI en {countdown} segundos",
"fileUploadFailed": "Error al cargar el archivo. \nAsegúrese de haber seleccionado el archivo correcto e inténtelo nuevamente.", "fileUploadFailed": "Error al cargar el archivo. \nAsegúrese de haber seleccionado el archivo correcto e inténtelo nuevamente.",
"uploading": "Subiendo", "uploading": "Subiendo",
"firmwareUpdateText": "Cuando utilice la función de carga de firmware, asegúrese de utilizar los archivos correctos. \nCargar archivos incorrectos puede provocar que el dispositivo no funcione. \nSi sale mal, puede restaurar el firmware cargando la imagen completa después de configurar el dispositivo en modo BOOT." "firmwareUpdateText": "Cuando utilice la función de carga de firmware, asegúrese de utilizar los archivos correctos. \nCargar archivos incorrectos puede provocar que el dispositivo no funcione. \nSi sale mal, puede restaurar el firmware cargando la imagen completa después de configurar el dispositivo en modo BOOT.",
"swUpToDate": "Tienes la ultima version.",
"swUpdateAvailable": "¡Una nueva versión está disponible!",
"latestVersion": "Ultima versión",
"releaseDate": "Fecha de lanzamiento",
"viewRelease": "Ver lanzamiento"
} }
}, },
"button": { "button": {

View file

@ -64,7 +64,12 @@
"fileUploadSuccess": "Bestand geüpload, apparaat herstart. WebUI opnieuw geladen over {countdown} seconden", "fileUploadSuccess": "Bestand geüpload, apparaat herstart. WebUI opnieuw geladen over {countdown} seconden",
"fileUploadFailed": "Bestandsupload mislukt. \nZorg ervoor dat het juiste bestand is geselecteerd en probeer het opnieuw.", "fileUploadFailed": "Bestandsupload mislukt. \nZorg ervoor dat het juiste bestand is geselecteerd en probeer het opnieuw.",
"uploading": "Uploaden", "uploading": "Uploaden",
"firmwareUpdateText": "Zorg bij het gebruiken van de firmware upload dat de juiste bestanden gebruikt worden. \nHet uploaden van de verkeerde bestanden kan resulteren in een niet-werkend apparaat. \nAls het misgaat, kunt u de firmware herstellen door de volledige afbeelding te uploaden nadat u het apparaat in de BOOT-modus hebt gezet." "firmwareUpdateText": "Zorg bij het gebruiken van de firmware upload dat de juiste bestanden gebruikt worden. \nHet uploaden van de verkeerde bestanden kan resulteren in een niet-werkend apparaat. \nAls het misgaat, kunt u de firmware herstellen door de volledige afbeelding te uploaden nadat u het apparaat in de BOOT-modus hebt gezet.",
"swUpToDate": "Je hebt de nieuwste versie.",
"swUpdateAvailable": "Een nieuwere versie is beschikbaar!",
"latestVersion": "Laatste versie",
"releaseDate": "Datum van publicatie",
"viewRelease": "Bekijk publicatie"
} }
}, },
"colors": { "colors": {

View file

@ -1,10 +1,19 @@
<script lang="ts"> <script lang="ts">
import { PUBLIC_BASE_URL } from '$lib/config'; import { PUBLIC_BASE_URL } from '$lib/config';
import { onMount } from 'svelte';
import { _ } from 'svelte-i18n'; import { _ } from 'svelte-i18n';
import { writable } from 'svelte/store'; import { writable } from 'svelte/store';
import { Progress, Alert, Button } from 'sveltestrap'; import { Progress, Alert, Button } from 'sveltestrap';
export let settings = { hwRev: '' }; export let settings = { hwRev: '' };
let currentVersion: string = $settings.gitTag; // Replace with your current version
let latestVersion: string = '';
let isNewerVersionAvailable: boolean = false;
let releaseDate: string = '';
let releaseUrl: string = '';
const countdown = writable(10); const countdown = writable(10);
let firmwareUploadFile: File | null = null; let firmwareUploadFile: File | null = null;
let firmwareWebUiFile: File | null = null; let firmwareWebUiFile: File | null = null;
@ -97,8 +106,54 @@
return binaryFilename; return binaryFilename;
}; };
onMount(async () => {
try {
const response = await fetch(
'https://api.github.com/repos/btclock/btclock_v3/releases/latest'
);
const data = await response.json();
latestVersion = data.tag_name;
releaseDate = new Date(data.created_at).toLocaleString();
releaseUrl = data.html_url;
isNewerVersionAvailable = compareVersions(latestVersion, currentVersion) === 1;
} catch (error) {
console.error('Error fetching latest version:', error);
}
});
function compareVersions(version1: string, version2: string): number {
const parts1 = version1.split('.').map((part) => parseInt(part, 10));
const parts2 = version2.split('.').map((part) => parseInt(part, 10));
for (let i = 0; i < 3; i++) {
if (parts1[i] > parts2[i]) {
return 1;
} else if (parts1[i] < parts2[i]) {
return -1;
}
}
return 0;
}
</script> </script>
{#if latestVersion}
<p>
{$_('section.firmwareUpdater.latestVersion')}: {latestVersion} - {$_(
'section.firmwareUpdater.releaseDate'
)}: {releaseDate} -
<a href={releaseUrl} target="_blank">{$_('section.firmwareUpdater.viewRelease')}</a><br />
{#if isNewerVersionAvailable}
{$_('section.firmwareUpdater.swUpdateAvailable')}
{:else}
{$_('section.firmwareUpdater.swUpToDate')}
{/if}
</p>
{:else}
<p>Loading...</p>
{/if}
<section class="row row-cols-lg-auto align-items-end"> <section class="row row-cols-lg-auto align-items-end">
<div class="col-12"> <div class="col-12">
<label for="firmwareFile" class="form-label">Firmware file ({getFirmwareBinaryName()})</label> <label for="firmwareFile" class="form-label">Firmware file ({getFirmwareBinaryName()})</label>