Skip to content

Commit fe0439f

Browse files
committed
feat(update): check for new github release when internet connection is established
1 parent 4ca41f0 commit fe0439f

File tree

13 files changed

+346
-61
lines changed

13 files changed

+346
-61
lines changed

assets/i18n/de-DE.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
"disconnected": "Verbindung zum Duet getrennt",
156156
"update_available": "Update verfügbar",
157157
"update_available_text": "Bestätigen, um das Update zu installieren",
158+
"update_available_github_text": "Eine neuere DuetScreen-Version ist verfügbar.\nNeueste: {:s}\nInstalliert: {:s}\n\nMöchten Sie jetzt aktualisieren?",
158159
"update_cancel": "Abbrechen",
159160
"update_confirm": "Aktualisieren",
160161
"update_buildroot_error_text": "Inkompatible Buildroot-Version. Bitte SD-Karte neu flashen.\nAktuelle Buildroot-Version: {:s}\nErforderliche Buildroot-Version: {:s}",

assets/i18n/en-GB.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@
156156
"disconnected": "Disconnected from Duet",
157157
"update_available": "Update Available",
158158
"update_available_text": "Confirm to install the update",
159+
"update_available_github_text": "A newer DuetScreen release is available.\nLatest: {:s}\nInstalled: {:s}\n\nWould you like to update now?",
159160
"update_cancel": "Cancel",
160161
"update_confirm": "Update",
161162
"update_successful": "Update Successful",

assets/i18n/es-ES.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
"disconnected": "Desconectado del Duet",
156156
"update_available": "Actualización disponible",
157157
"update_available_text": "Confirmar para instalar la actualización",
158+
"update_available_github_text": "Hay una versión más reciente de DuetScreen disponible.\nÚltima: {:s}\nInstalada: {:s}\n\n¿Desea actualizar ahora?",
158159
"update_cancel": "Cancelar",
159160
"update_confirm": "Actualizar",
160161
"update_buildroot_error_text": "Versión de buildroot incompatible. Por favor, vuelva a grabar la tarjeta SD.\nVersión actual de buildroot: {:s}\nVersión requerida de buildroot: {:s}",

assets/i18n/fr-FR.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
"disconnected": "Déconnecté du Duet",
156156
"update_available": "Mise à jour disponible",
157157
"update_available_text": "Confirmer pour installer la mise à jour",
158+
"update_available_github_text": "Une version plus récente de DuetScreen est disponible.\nDernière : {:s}\nInstallée : {:s}\n\nVoulez-vous mettre à jour maintenant ?",
158159
"update_cancel": "Annuler",
159160
"update_confirm": "Mettre à jour",
160161
"update_buildroot_error_text": "Version de buildroot incompatible. Veuillez reflasher la carte SD.\nVersion actuelle de buildroot : {:s}\nVersion requise de buildroot : {:s}",

assets/i18n/it-IT.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
"disconnected": "Disconnesso dal Duet",
156156
"update_available": "Aggiornamento disponibile",
157157
"update_available_text": "Conferma per installare l'aggiornamento",
158+
"update_available_github_text": "È disponibile una versione più recente di DuetScreen.\nUltima: {:s}\nInstallata: {:s}\n\nVuoi aggiornare ora?",
158159
"update_cancel": "Annulla",
159160
"update_confirm": "Aggiorna",
160161
"update_buildroot_error_text": "Versione buildroot incompatibile. Si prega di riflashare la scheda SD.\nVersione buildroot attuale: {:s}\nVersione buildroot richiesta: {:s}",

assets/i18n/nl-NL.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
"disconnected": "Verbinding met Duet verbroken",
156156
"update_available": "Update beschikbaar",
157157
"update_available_text": "Bevestig om de update te installeren",
158+
"update_available_github_text": "Er is een nieuwere DuetScreen-versie beschikbaar.\nNieuwste: {:s}\nGeïnstalleerd: {:s}\n\nWilt u nu bijwerken?",
158159
"update_cancel": "Annuleren",
159160
"update_confirm": "Bijwerken",
160161
"update_buildroot_error_text": "Incompatibele buildroot-versie. Gelieve de SD-kaart opnieuw te flashen.\nHuidige buildroot-versie: {:s}\nVereiste buildroot-versie: {:s}",

assets/i18n/pt-PT.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@
155155
"disconnected": "Desconectado do Duet",
156156
"update_available": "Atualização disponível",
157157
"update_available_text": "Confirmar para instalar a atualização",
158+
"update_available_github_text": "Está disponível uma versão mais recente do DuetScreen.\nMais recente: {:s}\nInstalada: {:s}\n\nPretende atualizar agora?",
158159
"update_cancel": "Cancelar",
159160
"update_confirm": "Atualizar"
160161
,

src/UI/Core/EventTypes.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ namespace Log
3434
XX(Connected) \
3535
XX(Disconnected) \
3636
XX(UpdateAvailable, std::string) \
37+
XX(GithubUpdateAvailable, std::string) \
3738
XX(UpdateResult, UpgradeHelper::UpgradeInfo) \
3839
XX(FanData) \
3940
XX(BedHeaterData) \

src/UI/Screens/Home/HomePresenter.cpp

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
#include "nameof.hpp"
1111
#include "utils/StorageHelper.h"
1212
#include "utils/UpgradeHelper.h"
13+
#include "version.h"
1314
#include <algorithm>
1415
#include <regex>
1516

@@ -19,6 +20,7 @@ namespace UI
1920
{
2021
ZoneScoped;
2122
registerEventListener<EventType::UpdateAvailable>(this, &HomePresenter::newUpdateAvailable);
23+
registerEventListener<EventType::GithubUpdateAvailable>(this, &HomePresenter::newGithubUpdateAvailable);
2224
registerEventListener<EventType::UpdateResult>(this, &HomePresenter::handleUpdateResult);
2325
registerEventListener<EventType::AxesData>(this, &HomePresenter::newAxesData);
2426
registerEventListener<EventType::Response>(this, &HomePresenter::newResponse);
@@ -62,6 +64,12 @@ namespace UI
6264
UpgradeHelper::upgradeFromUSB(m_updateFile);
6365
}
6466

67+
void HomePresenter::updateFromGithub()
68+
{
69+
ZoneScoped;
70+
UpgradeHelper::upgradeFromGithubLatest();
71+
}
72+
6573
void HomePresenter::newUpdateAvailable(const std::string& file)
6674
{
6775
ZoneScoped;
@@ -79,6 +87,21 @@ namespace UI
7987
updatePrompt.open();
8088
}
8189

90+
void HomePresenter::newGithubUpdateAvailable(const std::string& latestVersion)
91+
{
92+
ZoneScoped;
93+
94+
auto& updatePrompt = m_view->getUpdatePrompt();
95+
updatePrompt.setTitle(_("message.update_available"));
96+
updatePrompt.setText(_("message.update_available_github_text", latestVersion, FIRMWARE_VERSION));
97+
updatePrompt.setOkBtnText(_("message.update_confirm"));
98+
updatePrompt.setCancelBtnText(_("message.update_cancel"));
99+
updatePrompt.setOkCallback([this]() { updateFromGithub(); });
100+
updatePrompt.okVisible(true);
101+
updatePrompt.cancelVisible(true);
102+
updatePrompt.open();
103+
}
104+
82105
void HomePresenter::handleUpdateResult(const UpgradeHelper::UpgradeInfo& info)
83106
{
84107
ZoneScoped;

src/UI/Screens/Home/HomePresenter.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,10 @@ namespace UI
1717
void clear();
1818

1919
void update();
20+
void updateFromGithub();
2021

2122
void newUpdateAvailable(const std::string& file);
23+
void newGithubUpdateAvailable(const std::string& latestVersion);
2224
void handleUpdateResult(const UpgradeHelper::UpgradeInfo& info);
2325
void newAxesData();
2426
void newResponse(const ResponseType type, const std::string& response);

0 commit comments

Comments
 (0)