Feat: Regional country codes UI

This commit is contained in:
dranik
2026-05-04 14:47:23 +03:00
parent c28452a5da
commit dddc52ba5e
4 changed files with 26 additions and 2 deletions

View File

@@ -1,6 +1,7 @@
#include "apiUtils.h" #include "apiUtils.h"
#include "core/utils/constants/configKeys.h" #include "core/utils/constants/configKeys.h"
#include <QLatin1Char>
#include <QDateTime> #include <QDateTime>
#include <QJsonDocument> #include <QJsonDocument>
#include <QJsonObject> #include <QJsonObject>
@@ -289,3 +290,18 @@ QString apiUtils::getPremiumV2VpnKey(const QJsonObject &serverConfigObject)
return vpnKeyText; 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();
}

View File

@@ -30,6 +30,9 @@ namespace apiUtils
QString getPremiumV1VpnKey(const QJsonObject &serverConfigObject); QString getPremiumV1VpnKey(const QJsonObject &serverConfigObject);
QString getPremiumV2VpnKey(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 #endif // APIUTILS_H

View File

@@ -196,7 +196,11 @@ QString ServersUiController::getDefaultServerImagePathCollapsed() const
if (countryCode.isEmpty()) { if (countryCode.isEmpty()) {
return ""; 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 ""; return "";
} }

View File

@@ -5,6 +5,7 @@
#include "core/utils/api/apiEnums.h" #include "core/utils/api/apiEnums.h"
#include "core/utils/constants/apiKeys.h" #include "core/utils/constants/apiKeys.h"
#include "core/utils/constants/apiConstants.h" #include "core/utils/constants/apiConstants.h"
#include "core/utils/api/apiUtils.h"
#include "logger.h" #include "logger.h"
namespace namespace
@@ -41,7 +42,7 @@ QVariant ApiCountryModel::data(const QModelIndex &index, int role) const
return countryInfo.countryName; return countryInfo.countryName;
} }
case CountryImageCodeRole: { case CountryImageCodeRole: {
return countryInfo.countryCode.toUpper(); return apiUtils::countryCodeBaseForFlag(countryInfo.countryCode);
} }
case IsIssuedRole: { case IsIssuedRole: {
return isIssued; return isIssued;