diff --git a/client/core/controllers/coreSignalHandlers.cpp b/client/core/controllers/coreSignalHandlers.cpp index 3f8739b30..402810884 100644 --- a/client/core/controllers/coreSignalHandlers.cpp +++ b/client/core/controllers/coreSignalHandlers.cpp @@ -33,7 +33,6 @@ #include "core/controllers/connectionController.h" #include "ui/models/clientManagementModel.h" #include "ui/controllers/api/apiNewsUiController.h" -#include "ui/models/api/apiCountryModel.h" #include "ui/models/containersModel.h" #include "core/utils/containerEnum.h" @@ -176,17 +175,14 @@ void CoreSignalHandlers::initApiCountryModelUpdateHandler() if (processedServerId.isEmpty()) { return; } - - QJsonArray availableCountries; - QString serverCountryCode; const auto apiV2 = m_coreController->m_serversRepository->apiV2Config(processedServerId); - if (apiV2.has_value()) { - availableCountries = apiV2->apiConfig.availableCountries; - serverCountryCode = apiV2->apiConfig.serverCountryCode; + if (!apiV2.has_value()) { + return; } - - m_coreController->m_apiCountryModel->updateModel(availableCountries, serverCountryCode); + + m_coreController->m_apiCountryModel->updateModel(apiV2->apiConfig.availableCountries, + apiV2->apiConfig.serverCountryCode); }); } diff --git a/client/ui/controllers/serversUiController.cpp b/client/ui/controllers/serversUiController.cpp index 13f3d397b..a9486e99f 100644 --- a/client/ui/controllers/serversUiController.cpp +++ b/client/ui/controllers/serversUiController.cpp @@ -156,7 +156,17 @@ void ServersUiController::updateModel() m_serversModel->updateModel(m_orderedServerDescriptions, defaultServerId); - updateContainersModel(); + if (!m_processedServerId.isEmpty()) { + if (isServerFromApi(m_processedServerId)) { + const auto &description = serverDescriptionById(m_processedServerId); + if (description.isApiV2 && description.isCountrySelectionAvailable + && !description.apiAvailableCountries.isEmpty()) { + emit updateApiCountryModel(); + } + } else { + updateContainersModel(); + } + } updateDefaultServerContainersModel(); if (hadServersFromGatewayBefore != hasServersFromGatewayNow) { @@ -350,19 +360,14 @@ void ServersUiController::setProcessedServerId(const QString &serverId) m_processedServerId = normalizedServerId; if (newIndex >= 0) { - updateContainersModel(); - - for (const auto &description : m_orderedServerDescriptions) { - if (description.serverId != normalizedServerId) { - continue; + if (isServerFromApi(m_processedServerId)) { + const auto &description = serverDescriptionById(m_processedServerId); + if (description.isApiV2 && description.isCountrySelectionAvailable + && !description.apiAvailableCountries.isEmpty()) { + emit updateApiCountryModel(); } - if (description.isApiV2) { - if (description.isCountrySelectionAvailable && !description.apiAvailableCountries.isEmpty()) { - emit updateApiCountryModel(); - } - emit updateApiServicesModel(); - } - break; + } else { + updateContainersModel(); } } diff --git a/client/ui/controllers/serversUiController.h b/client/ui/controllers/serversUiController.h index eb85a9436..788e0e037 100644 --- a/client/ui/controllers/serversUiController.h +++ b/client/ui/controllers/serversUiController.h @@ -113,7 +113,6 @@ signals: void processedContainerIndexChanged(int index); void hasServersFromGatewayApiChanged(); void updateApiCountryModel(); - void updateApiServicesModel(); public: void updateModel(); diff --git a/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml b/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml index 40c15a94c..f3adc6883 100644 --- a/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml +++ b/client/ui/qml/Pages2/PageSettingsApiAvailableCountries.qml @@ -83,7 +83,7 @@ PageType { model: ApiCountryModel - currentIndex: 0 + currentIndex: ApiCountryModel.currentIndex ButtonGroup { id: containersRadioButtonGroup