improve version check, #1497

This commit is contained in:
proddy
2025-03-30 14:51:59 +02:00
parent 83330907cd
commit 6991677cf9
14 changed files with 84 additions and 58 deletions

View File

@@ -44,7 +44,9 @@ const Version = () => {
const [restarting, setRestarting] = useState<boolean>(false); const [restarting, setRestarting] = useState<boolean>(false);
const [openInstallDialog, setOpenInstallDialog] = useState<boolean>(false); const [openInstallDialog, setOpenInstallDialog] = useState<boolean>(false);
const [usingDevVersion, setUsingDevVersion] = useState<boolean>(false); const [usingDevVersion, setUsingDevVersion] = useState<boolean>(false);
const [upgradeAvailable, setUpgradeAvailable] = useState<boolean>(false); const [devUpgradeAvailable, setDevUpgradeAvailable] = useState<boolean>(false);
const [stableUpgradeAvailable, setStableUpgradeAvailable] =
useState<boolean>(false);
const [internetLive, setInternetLive] = useState<boolean>(false); const [internetLive, setInternetLive] = useState<boolean>(false);
const [downloadOnly, setDownloadOnly] = useState<boolean>(false); const [downloadOnly, setDownloadOnly] = useState<boolean>(false);
@@ -62,8 +64,13 @@ const Version = () => {
immediate: false immediate: false
} }
).onSuccess((event) => { ).onSuccess((event) => {
const data = event.data as { emsesp_version: string; upgradeable: boolean }; const data = event.data as {
setUpgradeAvailable(data.upgradeable); emsesp_version: string;
dev_upgradeable: boolean;
stable_upgradeable: boolean;
};
setDevUpgradeAvailable(data.dev_upgradeable);
setStableUpgradeAvailable(data.stable_upgradeable);
}); });
const { const {
@@ -236,8 +243,12 @@ const Version = () => {
setUsingDevVersion(data.emsesp_version.includes('dev')); setUsingDevVersion(data.emsesp_version.includes('dev'));
}; };
const showButtons = (showDev?: boolean) => { const showButtons = (showDev: boolean) => {
if (!me.admin) { if (
!me.admin ||
(showDev && !devUpgradeAvailable) ||
(!showDev && !stableUpgradeAvailable)
) {
return; return;
} }
@@ -266,10 +277,11 @@ const Version = () => {
size="small" size="small"
onClick={() => showFirmwareDialog(showDev)} onClick={() => showFirmwareDialog(showDev)}
> >
{upgradeAvailable || (!usingDevVersion && showDev) {(devUpgradeAvailable && showDev) || (stableUpgradeAvailable && !showDev)
? LL.UPGRADE() ? showDev && !usingDevVersion
: LL.REINSTALL()} ? LL.SWITCH_RELEASE_TYPE()
&hellip; : LL.UPGRADE()
: LL.INSTALL()}
</Button> </Button>
); );
}; };
@@ -421,8 +433,8 @@ const Version = () => {
</Typography> </Typography>
</Grid> </Grid>
</Grid> </Grid>
{(devUpgradeAvailable && usingDevVersion) ||
{upgradeAvailable ? ( (stableUpgradeAvailable && !usingDevVersion) ? (
<Typography mt={2} color="warning"> <Typography mt={2} color="warning">
<InfoOutlinedIcon <InfoOutlinedIcon
color="warning" color="warning"
@@ -436,7 +448,9 @@ const Version = () => {
color="success" color="success"
sx={{ verticalAlign: 'middle', mr: 2 }} sx={{ verticalAlign: 'middle', mr: 2 }}
/> />
{LL.LATEST_VERSION()} {LL.LATEST_VERSION(
usingDevVersion ? LL.DEVELOPMENT() : LL.STABLE()
)}
</Typography> </Typography>
)} )}
</> </>

View File

@@ -333,7 +333,7 @@ const cz: Translation = {
WAIT_FIRMWARE: 'Firmware se nahrává a instaluje', WAIT_FIRMWARE: 'Firmware se nahrává a instaluje',
INSTALL_VERSION: 'Tímto se instalovat verze {0}. Jste si jistí?', INSTALL_VERSION: 'Tímto se instalovat verze {0}. Jste si jistí?',
UPGRADE_AVAILABLE: 'Je k dispozici aktualizace firmwaru!', UPGRADE_AVAILABLE: 'Je k dispozici aktualizace firmwaru!',
LATEST_VERSION: 'Používáte nejnovější verzi firmwaru', LATEST_VERSION: 'Používáte nejnovější verzi {0}firmwaru',
PLEASE_WAIT: 'Prosím čekejte', PLEASE_WAIT: 'Prosím čekejte',
RESTARTING_PRE: 'Inicializace', RESTARTING_PRE: 'Inicializace',
RESTARTING_POST: 'Příprava', RESTARTING_POST: 'Příprava',
@@ -351,8 +351,8 @@ const cz: Translation = {
THIS_VERSION: 'Tato verze', THIS_VERSION: 'Tato verze',
PLATFORM: 'Platforma', PLATFORM: 'Platforma',
RELEASE_TYPE: 'Typ sestavení', RELEASE_TYPE: 'Typ sestavení',
REINSTALL: 'Přeinstalovat',
INTERNET_CONNECTION_REQUIRED: 'Pro automatickou kontrolu a instalaci aktualizací je třeba internetové připojení', INTERNET_CONNECTION_REQUIRED: 'Pro automatickou kontrolu a instalaci aktualizací je třeba internetové připojení',
SWITCH_RELEASE_TYPE: 'Přepnout na vývojovou verzi'
}; };
export default cz; export default cz;

View File

@@ -333,7 +333,7 @@ const de: Translation = {
WAIT_FIRMWARE: 'Die Firmware wird hochgeladen und installiert.', WAIT_FIRMWARE: 'Die Firmware wird hochgeladen und installiert.',
INSTALL_VERSION: 'Dadurch wird die Version {0} heruntergeladen. Sind Sie sicher?', INSTALL_VERSION: 'Dadurch wird die Version {0} heruntergeladen. Sind Sie sicher?',
UPGRADE_AVAILABLE: 'Es ist ein Firmware-Upgrade verfügbar.', UPGRADE_AVAILABLE: 'Es ist ein Firmware-Upgrade verfügbar.',
LATEST_VERSION: 'Sie verwenden die neueste Firmware-Version', LATEST_VERSION: 'Sie verwenden die neueste {0} Firmware-Version',
PLEASE_WAIT: 'Bitte warten', PLEASE_WAIT: 'Bitte warten',
RESTARTING_PRE: 'Initialisierung', RESTARTING_PRE: 'Initialisierung',
RESTARTING_POST: 'Vorbereitung', RESTARTING_POST: 'Vorbereitung',
@@ -351,8 +351,8 @@ const de: Translation = {
THIS_VERSION: 'Diese Version', THIS_VERSION: 'Diese Version',
PLATFORM: 'Plattform', PLATFORM: 'Plattform',
RELEASE_TYPE: 'Release Typ', RELEASE_TYPE: 'Release Typ',
REINSTALL: 'Neu installieren',
INTERNET_CONNECTION_REQUIRED: 'Internetverbindung erforderlich für automatische Version-Überprüfung und -Aktualisierung', INTERNET_CONNECTION_REQUIRED: 'Internetverbindung erforderlich für automatische Version-Überprüfung und -Aktualisierung',
SWITCH_RELEASE_TYPE: 'Zum Entwickler-Release wechseln'
}; };
export default de; export default de;

View File

@@ -333,7 +333,7 @@ const en: Translation = {
WAIT_FIRMWARE: 'Firmware is uploading and installing', WAIT_FIRMWARE: 'Firmware is uploading and installing',
INSTALL_VERSION: 'This will install version {0}. Are you sure?', INSTALL_VERSION: 'This will install version {0}. Are you sure?',
UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', UPGRADE_AVAILABLE: 'There is a firmware upgrade available!',
LATEST_VERSION: 'You are using the latest firmware version', LATEST_VERSION: 'You are using the latest {0} firmware version',
PLEASE_WAIT: 'Please wait', PLEASE_WAIT: 'Please wait',
RESTARTING_PRE: 'Initializing', RESTARTING_PRE: 'Initializing',
RESTARTING_POST: 'Preparing', RESTARTING_POST: 'Preparing',
@@ -351,8 +351,8 @@ const en: Translation = {
THIS_VERSION: 'This Version', THIS_VERSION: 'This Version',
PLATFORM: 'Platform', PLATFORM: 'Platform',
RELEASE_TYPE: 'Release Type', RELEASE_TYPE: 'Release Type',
REINSTALL: 'Re-install',
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading',
SWITCH_RELEASE_TYPE: 'Switch to Development release'
}; };
export default en; export default en;

View File

@@ -333,7 +333,7 @@ const fr: Translation = {
WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate
INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate
UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate
LATEST_VERSION: 'You are using the latest firmware version', // TODO translate LATEST_VERSION: 'You are using the latest {0} firmware version', // TODO translate
PLEASE_WAIT: 'Please wait', // TODO translate PLEASE_WAIT: 'Please wait', // TODO translate
RESTARTING_PRE: 'Initializing', // TODO translate RESTARTING_PRE: 'Initializing', // TODO translate
RESTARTING_POST: 'Preparing', // TODO translate RESTARTING_POST: 'Preparing', // TODO translate
@@ -351,8 +351,8 @@ const fr: Translation = {
THIS_VERSION: 'This Version', // TODO translate THIS_VERSION: 'This Version', // TODO translate
PLATFORM: 'Platform', // TODO translate PLATFORM: 'Platform', // TODO translate
RELEASE_TYPE: 'Release Type', // TODO translate RELEASE_TYPE: 'Release Type', // TODO translate
REINSTALL: 'Re-install', // TODO translate INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', // TODO translate
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', SWITCH_RELEASE_TYPE: 'Switch to Development release' // TODO translate
}; };
export default fr; export default fr;

View File

@@ -333,7 +333,7 @@ const it: Translation = {
WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate
INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate
UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate
LATEST_VERSION: 'You are using the latest firmware version', // TODO translate LATEST_VERSION: 'You are using the latest {0}firmware version', // TODO translate
PLEASE_WAIT: 'Please wait', // TODO translate PLEASE_WAIT: 'Please wait', // TODO translate
RESTARTING_PRE: 'Initializing', // TODO translate RESTARTING_PRE: 'Initializing', // TODO translate
RESTARTING_POST: 'Preparing', // TODO translate RESTARTING_POST: 'Preparing', // TODO translate
@@ -351,8 +351,8 @@ const it: Translation = {
THIS_VERSION: 'This Version', // TODO translate THIS_VERSION: 'This Version', // TODO translate
PLATFORM: 'Platform', // TODO translate PLATFORM: 'Platform', // TODO translate
RELEASE_TYPE: 'Release Type', // TODO translate RELEASE_TYPE: 'Release Type', // TODO translate
REINSTALL: 'Re-install', // TODO translate INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', // TODO translate
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', SWITCH_RELEASE_TYPE: 'Switch to Development release' // TODO translate
}; };
export default it; export default it;

View File

@@ -333,15 +333,15 @@ const nl: Translation = {
WAIT_FIRMWARE: 'Firmware wordt geüpload en geïnstalleerd', WAIT_FIRMWARE: 'Firmware wordt geüpload en geïnstalleerd',
INSTALL_VERSION: 'Hiermee wordt versie {0} geïnstalleerd. Weet je het zeker?', INSTALL_VERSION: 'Hiermee wordt versie {0} geïnstalleerd. Weet je het zeker?',
UPGRADE_AVAILABLE: 'Er is een firmware-upgrade beschikbaar!', UPGRADE_AVAILABLE: 'Er is een firmware-upgrade beschikbaar!',
LATEST_VERSION: 'U gebruikt de nieuwste firmwareversie', LATEST_VERSION: 'U gebruikt de nieuwste {0} firmwareversie',
PLEASE_WAIT: 'Een ogenblik geduld', PLEASE_WAIT: 'Een ogenblik geduld',
RESTARTING_PRE: 'Initialiseren', RESTARTING_PRE: 'Initialiseren',
RESTARTING_POST: 'Voorbereiding', RESTARTING_POST: 'Voorbereiding',
AUTO_SCROLL: 'Automatisch Scrollen', AUTO_SCROLL: 'Automatisch Scrollen',
DASHBOARD: 'Dashboard', DASHBOARD: 'Dashboard',
DEVELOPER_MODE: 'Ontwikkelaarsmodus', DEVELOPER_MODE: 'Ontwikkelaarsmodus',
BYTES: 'Bytes', // TODO translate BYTES: 'Bytes',
BITMASK: 'Bit Mask',// TODO translate BITMASK: 'Bit Mask',
DUPLICATE: 'Duplicaat', DUPLICATE: 'Duplicaat',
UPGRADE: 'Upgraden', UPGRADE: 'Upgraden',
DASHBOARD_1: 'Alle EMS-entiteiten die actief zijn en als favoriet zijn gemarkeerd, plus alle aangepaste entiteiten en externe sensorgegevens worden hieronder weergegeven.', DASHBOARD_1: 'Alle EMS-entiteiten die actief zijn en als favoriet zijn gemarkeerd, plus alle aangepaste entiteiten en externe sensorgegevens worden hieronder weergegeven.',
@@ -351,8 +351,8 @@ const nl: Translation = {
THIS_VERSION: 'Deze Versie', THIS_VERSION: 'Deze Versie',
PLATFORM: 'Platform', PLATFORM: 'Platform',
RELEASE_TYPE: 'Release Typ', RELEASE_TYPE: 'Release Typ',
REINSTALL: 'Opnieuw Installeren',
INTERNET_CONNECTION_REQUIRED: 'Internetverbinding vereist voor automatische versiecontrole en -upgrade', INTERNET_CONNECTION_REQUIRED: 'Internetverbinding vereist voor automatische versiecontrole en -upgrade',
SWITCH_RELEASE_TYPE: 'Switch naar Development release'
}; };
export default nl; export default nl;

View File

@@ -333,7 +333,7 @@ const no: Translation = {
WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate
INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate
UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate
LATEST_VERSION: 'You are using the latest firmware version', // TODO translate LATEST_VERSION: 'You are using the latest {0}firmware version', // TODO translate
PLEASE_WAIT: 'Please wait', // TODO translate PLEASE_WAIT: 'Please wait', // TODO translate
RESTARTING_PRE: 'Initializing', // TODO translate RESTARTING_PRE: 'Initializing', // TODO translate
RESTARTING_POST: 'Preparing', // TODO translate RESTARTING_POST: 'Preparing', // TODO translate
@@ -351,8 +351,8 @@ const no: Translation = {
THIS_VERSION: 'This Version', // TODO translate THIS_VERSION: 'This Version', // TODO translate
PLATFORM: 'Platform', // TODO translate PLATFORM: 'Platform', // TODO translate
RELEASE_TYPE: 'Release Type', // TODO translate RELEASE_TYPE: 'Release Type', // TODO translate
REINSTALL: 'Re-install', // TODO translate INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', // TODO translate
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', SWITCH_RELEASE_TYPE: 'Switch to Development release' // TODO translate
}; };
export default no; export default no;

View File

@@ -333,7 +333,7 @@ const pl: BaseTranslation = {
WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate
INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate
UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate
LATEST_VERSION: 'You are using the latest firmware version', // TODO translate LATEST_VERSION: 'You are using the latest {0} firmware version', // TODO translate
PLEASE_WAIT: 'Please wait', // TODO translate PLEASE_WAIT: 'Please wait', // TODO translate
RESTARTING_PRE: 'Initializing', // TODO translate RESTARTING_PRE: 'Initializing', // TODO translate
RESTARTING_POST: 'Preparing', // TODO translate RESTARTING_POST: 'Preparing', // TODO translate
@@ -351,8 +351,8 @@ const pl: BaseTranslation = {
THIS_VERSION: 'This Version', // TODO translate THIS_VERSION: 'This Version', // TODO translate
PLATFORM: 'Platform', // TODO translate PLATFORM: 'Platform', // TODO translate
RELEASE_TYPE: 'Release Type', // TODO translate RELEASE_TYPE: 'Release Type', // TODO translate
REINSTALL: 'Re-install', // TODO translate
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', // TODO translate INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', // TODO translate
SWITCH_RELEASE_TYPE: 'Switch to Development release' // TODO translate
}; };
export default pl; export default pl;

View File

@@ -333,7 +333,7 @@ const sk: Translation = {
WAIT_FIRMWARE: 'Firmvér sa nahráva a inštaluje', WAIT_FIRMWARE: 'Firmvér sa nahráva a inštaluje',
INSTALL_VERSION: 'Týmto sa inštalovať verzia {0}. Si si istý?', INSTALL_VERSION: 'Týmto sa inštalovať verzia {0}. Si si istý?',
UPGRADE_AVAILABLE: 'K dispozícii je aktualizácia firmvéru!', UPGRADE_AVAILABLE: 'K dispozícii je aktualizácia firmvéru!',
LATEST_VERSION: 'Používate poslednú verziu firmvéru', LATEST_VERSION: 'Používate poslednú {0} verziu firmvéru',
PLEASE_WAIT: 'Čakajte prosím', PLEASE_WAIT: 'Čakajte prosím',
RESTARTING_PRE: 'Prebieha inicializácia', RESTARTING_PRE: 'Prebieha inicializácia',
RESTARTING_POST: 'Príprava', RESTARTING_POST: 'Príprava',
@@ -351,8 +351,8 @@ const sk: Translation = {
THIS_VERSION: 'Táto verzia', THIS_VERSION: 'Táto verzia',
PLATFORM: 'Platforma', PLATFORM: 'Platforma',
RELEASE_TYPE: 'Typ vydania', RELEASE_TYPE: 'Typ vydania',
REINSTALL: 'Preinštalovať',
INTERNET_CONNECTION_REQUIRED: 'Internetové pripojenie je potrebné pre automatickú kontrolu a aktualizáciu', INTERNET_CONNECTION_REQUIRED: 'Internetové pripojenie je potrebné pre automatickú kontrolu a aktualizáciu',
SWITCH_RELEASE_TYPE: 'Prepnúť na vývojovú verziu'
}; };
export default sk; export default sk;

View File

@@ -333,7 +333,7 @@ const sv: Translation = {
WAIT_FIRMWARE: 'Firmware laddas upp och installeras', WAIT_FIRMWARE: 'Firmware laddas upp och installeras',
INSTALL_VERSION: 'Det här kommer installera version {0}. Är du säker?', INSTALL_VERSION: 'Det här kommer installera version {0}. Är du säker?',
UPGRADE_AVAILABLE: 'Det finns en tillgänglig firmwareupgradering!', UPGRADE_AVAILABLE: 'Det finns en tillgänglig firmwareupgradering!',
LATEST_VERSION: 'Du använder den senaste firmwareversionen.', LATEST_VERSION: 'Du använder den senaste {0} firmwareversionen.',
PLEASE_WAIT: 'Var god vänta', PLEASE_WAIT: 'Var god vänta',
RESTARTING_PRE: 'Initialiserar', RESTARTING_PRE: 'Initialiserar',
RESTARTING_POST: 'Förbereder', RESTARTING_POST: 'Förbereder',
@@ -351,8 +351,8 @@ const sv: Translation = {
THIS_VERSION: 'This Version', // TODO translate THIS_VERSION: 'This Version', // TODO translate
PLATFORM: 'Platform', // TODO translate PLATFORM: 'Platform', // TODO translate
RELEASE_TYPE: 'Release Type', // TODO translate RELEASE_TYPE: 'Release Type', // TODO translate
REINSTALL: 'Re-install', // TODO translate
INTERNET_CONNECTION_REQUIRED: 'Internetanslutning krävs för automatisk version kontroll och uppdatering', INTERNET_CONNECTION_REQUIRED: 'Internetanslutning krävs för automatisk version kontroll och uppdatering',
SWITCH_RELEASE_TYPE: 'Byt till utvecklingsversion'
}; };
export default sv; export default sv;

View File

@@ -333,7 +333,7 @@ const tr: Translation = {
WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate WAIT_FIRMWARE: 'Firmware is uploading and installing', // TODO translate
INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate INSTALL_VERSION: 'This will install version {0}. Are you sure?', // TODO translate
UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate UPGRADE_AVAILABLE: 'There is a firmware upgrade available!', // TODO translate
LATEST_VERSION: 'You are using the latest firmware version.', // TODO translate LATEST_VERSION: 'You are using the latest {0}firmware version.', // TODO translate
PLEASE_WAIT: 'Please wait', // TODO translate PLEASE_WAIT: 'Please wait', // TODO translate
RESTARTING_PRE: 'Initializing', // TODO translate RESTARTING_PRE: 'Initializing', // TODO translate
RESTARTING_POST: 'Preparing', // TODO translate RESTARTING_POST: 'Preparing', // TODO translate
@@ -351,8 +351,8 @@ const tr: Translation = {
THIS_VERSION: 'This Version', // TODO translate THIS_VERSION: 'This Version', // TODO translate
PLATFORM: 'Platform', // TODO translate PLATFORM: 'Platform', // TODO translate
RELEASE_TYPE: 'Release Type', // TODO translate RELEASE_TYPE: 'Release Type', // TODO translate
REINSTALL: 'Re-install', // TODO translate
INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', // TODO translate INTERNET_CONNECTION_REQUIRED: 'Internet connection required for automatic version checking and upgrading', // TODO translate
SWITCH_RELEASE_TYPE: 'Switch to Development release' // TODO translate
}; };
export default tr; export default tr;

View File

@@ -219,37 +219,40 @@ void WebStatusService::action(AsyncWebServerRequest * request, JsonVariant json)
// action = checkUpgrade // action = checkUpgrade
// versions holds the latest development version and stable version in one string, comma separated // versions holds the latest development version and stable version in one string, comma separated
bool WebStatusService::checkUpgrade(JsonObject root, std::string & versions) { bool WebStatusService::checkUpgrade(JsonObject root, std::string & versions) {
std::string current_version_s;
#ifndef EMSESP_STANDALONE
current_version_s = EMSESP_APP_VERSION;
#else
// for testing only - see api3 test in test.cpp
// current_version_s = "3.6.5";
current_version_s = "3.7.2-dev.1";
#endif
if (!versions.empty()) { if (!versions.empty()) {
version::Semver200_version current_version(current_version_s); version::Semver200_version current_version(current_version_s);
bool using_dev_version = !current_version.prerelease().find("dev"); // look for dev in the name to determine if we're using dev version version::Semver200_version latest_dev_version(versions.substr(0, versions.find(',')));
version::Semver200_version latest_version(using_dev_version ? versions.substr(0, versions.find(',')) : versions.substr(versions.find(',') + 1)); version::Semver200_version latest_stable_version(versions.substr(versions.find(',') + 1));
bool upgradeable = (latest_version > current_version);
// look for dev in the name to determine if we're using a dev release
bool using_dev_version = !current_version.prerelease().find("dev");
bool dev_upgradeable = latest_dev_version > current_version;
bool stable_upgradeable = latest_stable_version > current_version;
#if defined(EMSESP_DEBUG) #if defined(EMSESP_DEBUG)
emsesp::EMSESP::logger() emsesp::EMSESP::logger()
.debug("Checking Version upgrade. Using %s release branch. current version=%d.%d.%d-%s, latest version=%d.%d.%d-%s (%s upgradeable)", .debug("Checking version upgrade. This version=%d.%d.%d-%s (%s),latest dev=%d.%d.%d-%s (%s upgradeable),latest stable=%d.%d.%d-%s (%s upgradeable)",
(using_dev_version ? "dev" : "stable"),
current_version.major(), current_version.major(),
current_version.minor(), current_version.minor(),
current_version.patch(), current_version.patch(),
current_version.prerelease().c_str(), current_version.prerelease().c_str(),
latest_version.major(), using_dev_version ? "Dev" : "Stable",
latest_version.minor(), latest_dev_version.major(),
latest_version.patch(), latest_dev_version.minor(),
latest_version.prerelease().c_str(), latest_dev_version.patch(),
upgradeable ? "IS" : "NOT"); latest_dev_version.prerelease().c_str(),
dev_upgradeable ? "is" : "is not",
latest_stable_version.major(),
latest_stable_version.minor(),
latest_stable_version.patch(),
latest_stable_version.prerelease().c_str(),
stable_upgradeable ? "is" : "is not");
#endif #endif
root["upgradeable"] = upgradeable; root["dev_upgradeable"] = dev_upgradeable;
root["stable_upgradeable"] = stable_upgradeable;
} }
root["emsesp_version"] = current_version_s; // always send back current version root["emsesp_version"] = current_version_s; // always send back current version

View File

@@ -5,12 +5,19 @@
#define EMSESP_ACTION_SERVICE_PATH "/rest/action" #define EMSESP_ACTION_SERVICE_PATH "/rest/action"
#include <semver200.h> // for version checking #include <semver200.h> // for version checking
#include "../emsesp_version.h"
namespace emsesp { namespace emsesp {
class WebStatusService { class WebStatusService {
public: public:
WebStatusService(AsyncWebServer * server, SecurityManager * securityManager); WebStatusService(AsyncWebServer * server, SecurityManager * securityManager);
void set_current_version(const std::string & version) {
current_version_s = version;
}
std::string get_current_version() {
return current_version_s;
}
// make action function public so we can test in the debug and standalone mode // make action function public so we can test in the debug and standalone mode
#ifndef EMSESP_STANDALONE #ifndef EMSESP_STANDALONE
@@ -29,6 +36,8 @@ class WebStatusService {
bool uploadURL(const char * url); bool uploadURL(const char * url);
bool setSystemStatus(const char * status); bool setSystemStatus(const char * status);
void allvalues(JsonObject output); void allvalues(JsonObject output);
std::string current_version_s = EMSESP_APP_VERSION;
}; };
} // namespace emsesp } // namespace emsesp