Update min/max required nymea core version

pull/547/head
Michael Zanetti 2021-02-24 13:23:05 +01:00
parent 24d5d8fa29
commit f82fc9056d
3 changed files with 26 additions and 9 deletions

View File

@ -644,13 +644,19 @@ void JsonRpcClient::helloReply(int /*commandId*/, const QVariantMap &params)
qDebug() << "Handshake reply:" << "Protocol version:" << protoVersionString << "InitRequired:" << m_initialSetupRequired << "AuthRequired:" << m_authenticationRequired << "PushButtonAvailable:" << m_pushButtonAuthAvailable;;
QVersionNumber minimumRequiredVersion = QVersionNumber(1, 10);
QVersionNumber minimumRequiredVersion = QVersionNumber(5, 0);
QVersionNumber maximumMajorVersion = QVersionNumber(5);
if (m_jsonRpcVersion < minimumRequiredVersion) {
qWarning() << "Nymea core doesn't support minimum required version. Required:" << minimumRequiredVersion << "Found:" << m_jsonRpcVersion;
m_connection->disconnect();
emit invalidProtocolVersion(m_jsonRpcVersion.toString(), minimumRequiredVersion.toString());
emit invalidMinimumVersion(m_jsonRpcVersion.toString(), minimumRequiredVersion.toString());
return;
}
if (m_jsonRpcVersion.majorVersion() > maximumMajorVersion.majorVersion()) {
qWarning() << "Nymea core has breaking API changes not supported by this app version. Core major version:" << m_jsonRpcVersion.majorVersion() << "Maximum supported major version:" << maximumMajorVersion.majorVersion();
emit invalidMaximumVersion(m_jsonRpcVersion.toString(), QString("%1.x").arg(maximumMajorVersion.majorVersion()));
return;
}
// Verify SSL certificate
if (m_connection->isEncrypted()) {

View File

@ -129,7 +129,8 @@ signals:
void pushButtonAuthAvailableChanged();
void authenticatedChanged();
void tokenChanged();
void invalidProtocolVersion(const QString &actualVersion, const QString &minimumVersion);
void invalidMinimumVersion(const QString &actualVersion, const QString &minVersion);
void invalidMaximumVersion(const QString &actualVersion, const QString &maxVersion);
void authenticationFailed();
void pushButtonAuthFailed();
void createUserSucceeded();

View File

@ -366,10 +366,17 @@ Item {
init();
}
onInvalidProtocolVersion: {
onInvalidMinimumVersion: {
var popup = invalidVersionComponent.createObject(app.contentItem);
popup.actualVersion = actualVersion;
popup.minimumVersion = minimumVersion
popup.minVersion = minVersion;
popup.open()
tabSettings.lastConnectedHost = ""
}
onInvalidMaximumVersion: {
var popup = invalidVersionComponent.createObject(app.contentItem);
popup.actualVersion = actualVersion;
popup.maxVersion = maxVersion;
popup.open()
tabSettings.lastConnectedHost = ""
}
@ -421,8 +428,9 @@ Item {
Popup {
id: popup
property string actualVersion: "0.0"
property string minimumVersion: "1.10"
property string actualVersion: ""
property string minVersion: ""
property string maxVersion: ""
width: app.width * .8
height: col.childrenRect.height + app.margins * 2
@ -439,7 +447,9 @@ Item {
font.pixelSize: app.largeFont
}
Label {
text: qsTr("Sorry, the version of the %1:core you are trying to connect to is too old. This app requires at least version %2 but this %1:core only supports %3").arg(app.systemName).arg(popup.minimumVersion).arg(popup.actualVersion)
text: popup.minVersion != ""
? qsTr("The version of the %1:core you are trying to connect to is too old. This app requires at least version %2 but this %1:core only supports %3. Please update your %1:core system.").arg(app.systemName).arg(popup.minVersion).arg(popup.actualVersion)
: qsTr("The version of the %1:core you are trying to connect to is too new. This app supports only up to version %2 but this %1:core provides %3. Please update %1:app.").arg(app.systemName).arg(popup.maxVersion).arg(popup.actualVersion)
wrapMode: Text.WordWrap
Layout.fillWidth: true
}