diff --git a/client/core/controllers/gatewayController.cpp b/client/core/controllers/gatewayController.cpp index 15776328d..a49073329 100644 --- a/client/core/controllers/gatewayController.cpp +++ b/client/core/controllers/gatewayController.cpp @@ -262,7 +262,7 @@ bool GatewayController::shouldBypassProxy(QNetworkReply *reply, const QByteArray } else if (responseBody.contains("html")) { qDebug() << "The response contains an html tag"; return true; - } else if (checkEncryption) { + } else if (reply->error() == QNetworkReply::NetworkError::NoError && checkEncryption) { try { QSimpleCrypto::QBlockCipher blockCipher; static_cast(blockCipher.decryptAesBlockCipher(responseBody, key, iv, "", salt)); diff --git a/client/ui/models/api/apiAccountInfoModel.cpp b/client/ui/models/api/apiAccountInfoModel.cpp index cdb9dfe84..191582a55 100644 --- a/client/ui/models/api/apiAccountInfoModel.cpp +++ b/client/ui/models/api/apiAccountInfoModel.cpp @@ -48,8 +48,8 @@ QVariant ApiAccountInfoModel::data(const QModelIndex &index, int role) const } case ServiceDescriptionRole: { if (m_accountInfoData.configType == apiDefs::ConfigType::AmneziaPremiumV2) { - return tr("Classic VPN for comfortable work, downloading large files and watching videos. Works for any sites. Speed up to 200 " - "Mb/s"); + return tr("Classic VPN for seamless work, downloading large files, and watching videos. Access all websites and online resources. " + "Speeds up to 200 Mbps"); } else if (m_accountInfoData.configType == apiDefs::ConfigType::AmneziaFreeV3) { return tr("Free unlimited access to a basic set of websites such as Facebook, Instagram, Twitter (X), Discord, Telegram and " "more. YouTube is not included in the free plan."); diff --git a/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml b/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml index 43fbb160f..6e67ef1ff 100644 --- a/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml +++ b/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml @@ -81,7 +81,7 @@ PageType { actionButtonImage: "qrc:/images/controls/settings.svg" headerText: root.processedServer.name - descriptionText: qsTr("Locations for connection") + descriptionText: qsTr("Location for connection") actionButtonFunction: function() { PageController.showBusyIndicator(true) diff --git a/client/ui/qml/Pages2/PageSettingsApiDevices.qml b/client/ui/qml/Pages2/PageSettingsApiDevices.qml index 5cc21d078..402819783 100644 --- a/client/ui/qml/Pages2/PageSettingsApiDevices.qml +++ b/client/ui/qml/Pages2/PageSettingsApiDevices.qml @@ -42,8 +42,8 @@ PageType { Layout.rightMargin: 16 Layout.leftMargin: 16 - headerText: qsTr("Connected devices") - descriptionText: qsTr("To manage connected devices") + headerText: qsTr("Active devices") + descriptionText: qsTr("Manage currently connected devices") } WarningType { @@ -71,6 +71,11 @@ PageType { rightImageSource: "qrc:/images/controls/trash.svg" clickedFunction: function() { + if (isCurrentDevice && ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { + PageController.showNotificationMessage(qsTr("Cannot unlink device during active connection")) + return + } + var headerText = qsTr("Deactivate the subscription on selected device") var descriptionText = qsTr("The next time the “Connect” button is pressed, the device will be activated again") var yesButtonText = qsTr("Continue") diff --git a/client/ui/qml/Pages2/PageSettingsApiInstructions.qml b/client/ui/qml/Pages2/PageSettingsApiInstructions.qml index 3651407b2..7961594bb 100644 --- a/client/ui/qml/Pages2/PageSettingsApiInstructions.qml +++ b/client/ui/qml/Pages2/PageSettingsApiInstructions.qml @@ -99,7 +99,7 @@ PageType { Layout.leftMargin: 16 headerText: qsTr("How to connect on another device") - descriptionText: qsTr("Instructions on the Amnezia website") + descriptionText: qsTr("Setup guides on the Amnezia website") } } diff --git a/client/ui/qml/Pages2/PageSettingsApiNativeConfigs.qml b/client/ui/qml/Pages2/PageSettingsApiNativeConfigs.qml index a1cc1fb8c..f7acdf768 100644 --- a/client/ui/qml/Pages2/PageSettingsApiNativeConfigs.qml +++ b/client/ui/qml/Pages2/PageSettingsApiNativeConfigs.qml @@ -46,7 +46,7 @@ PageType { Layout.leftMargin: 16 headerText: qsTr("Configuration files") - descriptionText: qsTr("To connect a router or AmneziaWG application") + descriptionText: qsTr("For router setup or the AmneziaWG app") } } @@ -123,13 +123,13 @@ PageType { Layout.fillWidth: true Layout.margins: 16 - headerText: qsTr("Configuration file ") + moreOptionsDrawer.countryName + headerText: moreOptionsDrawer.countryName + qsTr(" configuration file") } LabelWithButtonType { Layout.fillWidth: true - text: qsTr("Create a new") + text: qsTr("Generate a new configuration file") descriptionText: qsTr("The previously created one will stop working") clickedFunction: function() { @@ -193,9 +193,15 @@ PageType { } function showQuestion(isConfigIssue, countryCode, countryName) { - var headerText = qsTr("Revoke the actual %1 configuration file?").arg(countryName) - var descriptionText = qsTr("The previously created file will no longer be valid. It will not be possible to connect using it.") - var yesButtonText = qsTr("Continue") + var headerText + if (isConfigIssue) { + headerText = qsTr("Generate a new %1 configuration file?").arg(countryName) + } else { + headerText = qsTr("Revoke the current %1 configuration file?").arg(countryName) + } + + var descriptionText = qsTr("Your previous configuration file will no longer work, and it will not be possible to connect using it") + var yesButtonText = isConfigIssue ? qsTr("Download") : qsTr("Continue") var noButtonText = qsTr("Cancel") var yesButtonFunction = function() { diff --git a/client/ui/qml/Pages2/PageSettingsApiServerInfo.qml b/client/ui/qml/Pages2/PageSettingsApiServerInfo.qml index 7d0896390..0a2d5ffc1 100644 --- a/client/ui/qml/Pages2/PageSettingsApiServerInfo.qml +++ b/client/ui/qml/Pages2/PageSettingsApiServerInfo.qml @@ -42,7 +42,7 @@ PageType { QtObject { id: deviceCountObject - readonly property string title: qsTr("Connected devices") + readonly property string title: qsTr("Active connections") readonly property string contentKey: "connectedDevices" readonly property string objectImageSource: "qrc:/images/controls/monitor.svg" } @@ -233,9 +233,9 @@ PageType { visible: footer.isVisibleForAmneziaFree - text: qsTr("Connected devices") + text: qsTr("Active devices") - descriptionText: qsTr("To manage connected devices") + descriptionText: qsTr("Manage currently connected devices") rightImageSource: "qrc:/images/controls/chevron-right.svg" clickedFunction: function() { @@ -265,6 +265,8 @@ PageType { LabelWithButtonType { Layout.fillWidth: true + visible: footer.isVisibleForAmneziaFree + text: qsTr("How to connect on another device") rightImageSource: "qrc:/images/controls/chevron-right.svg" @@ -273,7 +275,9 @@ PageType { } } - DividerType {} + DividerType { + visible: footer.isVisibleForAmneziaFree + } BasicButtonType { id: resetButton @@ -325,17 +329,17 @@ PageType { pressedColor: AmneziaStyle.color.sheerWhite textColor: AmneziaStyle.color.vibrantRed - text: qsTr("Deactivate the subscription on this device") + text: qsTr("Unlink this device") clickedFunc: function() { - var headerText = qsTr("Deactivate the subscription on this device?") - var descriptionText = qsTr("The next time the “Connect” button is pressed, the device will be activated again") + var headerText = qsTr("Are you sure you want to unlink this device?") + var descriptionText = qsTr("This will unlink the device from your subscription. You can reconnect it anytime by pressing Connect.") var yesButtonText = qsTr("Continue") var noButtonText = qsTr("Cancel") var yesButtonFunction = function() { if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { - PageController.showNotificationMessage(qsTr("Cannot deactivate subscription during active connection")) + PageController.showNotificationMessage(qsTr("Cannot unlink device during active connection")) } else { PageController.showBusyIndicator(true) if (ApiConfigsController.deactivateDevice()) { diff --git a/client/ui/qml/Pages2/PageSettingsApiSupport.qml b/client/ui/qml/Pages2/PageSettingsApiSupport.qml index 424e10c52..3e4f0149b 100644 --- a/client/ui/qml/Pages2/PageSettingsApiSupport.qml +++ b/client/ui/qml/Pages2/PageSettingsApiSupport.qml @@ -27,7 +27,7 @@ PageType { QtObject { id: techSupport - readonly property string title: qsTr("For technical support") + readonly property string title: qsTr("Email Support") readonly property string description: qsTr("support@amnezia.org") readonly property string link: "mailto:support@amnezia.org" } @@ -35,7 +35,7 @@ PageType { QtObject { id: paymentSupport - readonly property string title: qsTr("For payment issues") + readonly property string title: qsTr("Email Billing & Orders") readonly property string description: qsTr("help@vpnpay.io") readonly property string link: "mailto:help@vpnpay.io" } @@ -43,7 +43,7 @@ PageType { QtObject { id: site - readonly property string title: qsTr("Site") + readonly property string title: qsTr("Website") readonly property string description: qsTr("amnezia.org") readonly property string link: LanguageModel.getCurrentSiteUrl() } @@ -79,7 +79,7 @@ PageType { Layout.leftMargin: 16 headerText: qsTr("Support") - descriptionText: qsTr("Our technical support specialists are ready to help you at any time") + descriptionText: qsTr("Our technical support specialists are available to assist you at any time") } }