diff --git a/client/core/utils/api/apiUtils.cpp b/client/core/utils/api/apiUtils.cpp index eca4689fb..898f36124 100644 --- a/client/core/utils/api/apiUtils.cpp +++ b/client/core/utils/api/apiUtils.cpp @@ -1,6 +1,7 @@ #include "apiUtils.h" #include "core/utils/constants/configKeys.h" +#include #include #include #include @@ -289,3 +290,18 @@ QString apiUtils::getPremiumV2VpnKey(const QJsonObject &serverConfigObject) return vpnKeyText; } + +QString apiUtils::countryCodeBaseForFlag(const QString &fullCountryCode) +{ + const QString trimmed = fullCountryCode.trimmed(); + if (trimmed.isEmpty()) { + return QString(); + } + const int dashIdx = trimmed.indexOf(QLatin1Char('-')); + const QString base = dashIdx < 0 ? trimmed : trimmed.left(dashIdx); + const QString normalized = base.trimmed(); + if (normalized.isEmpty()) { + return QString(); + } + return normalized.toUpper(); +} diff --git a/client/core/utils/api/apiUtils.h b/client/core/utils/api/apiUtils.h index be770defa..e118adc40 100644 --- a/client/core/utils/api/apiUtils.h +++ b/client/core/utils/api/apiUtils.h @@ -30,6 +30,9 @@ namespace apiUtils QString getPremiumV1VpnKey(const QJsonObject &serverConfigObject); QString getPremiumV2VpnKey(const QJsonObject &serverConfigObject); + + // ISO2-style segment for flagKit assets (e.g. US-WEST -> US). Do not use in API request bodies. + QString countryCodeBaseForFlag(const QString &fullCountryCode); } #endif // APIUTILS_H diff --git a/client/ui/controllers/serversUiController.cpp b/client/ui/controllers/serversUiController.cpp index ccafe0f4b..b8f6a17f3 100644 --- a/client/ui/controllers/serversUiController.cpp +++ b/client/ui/controllers/serversUiController.cpp @@ -196,7 +196,11 @@ QString ServersUiController::getDefaultServerImagePathCollapsed() const if (countryCode.isEmpty()) { return ""; } - return QString("qrc:/countriesFlags/images/flagKit/%1.svg").arg(countryCode.toUpper()); + const QString imageCode = apiUtils::countryCodeBaseForFlag(countryCode); + if (imageCode.isEmpty()) { + return QString(); + } + return QString("qrc:/countriesFlags/images/flagKit/%1.svg").arg(imageCode); } return ""; } diff --git a/client/ui/models/api/apiCountryModel.cpp b/client/ui/models/api/apiCountryModel.cpp index 4aec43366..4b5fde650 100644 --- a/client/ui/models/api/apiCountryModel.cpp +++ b/client/ui/models/api/apiCountryModel.cpp @@ -5,6 +5,7 @@ #include "core/utils/api/apiEnums.h" #include "core/utils/constants/apiKeys.h" #include "core/utils/constants/apiConstants.h" +#include "core/utils/api/apiUtils.h" #include "logger.h" namespace @@ -41,7 +42,7 @@ QVariant ApiCountryModel::data(const QModelIndex &index, int role) const return countryInfo.countryName; } case CountryImageCodeRole: { - return countryInfo.countryCode.toUpper(); + return apiUtils::countryCodeBaseForFlag(countryInfo.countryCode); } case IsIssuedRole: { return isIssued;