diff --git a/client/core/controllers/selfhosted/importController.cpp b/client/core/controllers/selfhosted/importController.cpp index 4aace4c68..91fdb2b46 100644 --- a/client/core/controllers/selfhosted/importController.cpp +++ b/client/core/controllers/selfhosted/importController.cpp @@ -502,7 +502,7 @@ ImportController::ImportResult ImportController::importLink(const QUrl &url) serverConfig.insert(it.key(), it.value()); } - serverConfig.insert(configKey::description, m_appSettingsRepository->nextAvailableServerName()); + serverConfig.insert(configKey::description, m_serversRepository->nextAvailableServerName()); serverConfig[configKey::xraySubscriptionLink] = url.toString(); serverConfig[configKey::xraySubscriptionConfig] = configStrings; serverConfig[configKey::xraySubscriptionConfigName] = configNames; diff --git a/client/ui/controllers/serversUiController.cpp b/client/ui/controllers/serversUiController.cpp index d4f3d9015..ca9ccb5bf 100644 --- a/client/ui/controllers/serversUiController.cpp +++ b/client/ui/controllers/serversUiController.cpp @@ -343,6 +343,11 @@ bool ServersUiController::isServerSubscriptionExpiringSoon(const QString &server return serverDescriptionById(serverId).isSubscriptionExpiringSoon; } +bool ServersUiController::isServerContainXRayConfigs(const QString &serverId) const +{ + return serverDescriptionById(serverId).isXRaySubscription; +} + int ServersUiController::getProcessedContainerIndex() const { return m_processedContainerIndex; diff --git a/client/ui/controllers/serversUiController.h b/client/ui/controllers/serversUiController.h index fe31ab2cf..18d435648 100644 --- a/client/ui/controllers/serversUiController.h +++ b/client/ui/controllers/serversUiController.h @@ -28,7 +28,7 @@ class ServersUiController : public QObject Q_PROPERTY(bool isDefaultServerDefaultContainerHasSplitTunneling READ isDefaultServerDefaultContainerHasSplitTunneling NOTIFY defaultServerIdChanged) Q_PROPERTY(bool isDefaultServerFromApi READ isDefaultServerFromApi NOTIFY defaultServerIdChanged) - Q_PROPERTY(bool isDefaultServerContainXRayConfigs READ isDefaultServerContainXRayConfigs NOTIFY defaultServerIndexChanged) + Q_PROPERTY(bool isDefaultServerContainXRayConfigs READ isDefaultServerContainXRayConfigs NOTIFY defaultServerIdChanged) Q_PROPERTY(QString processedServerId READ getProcessedServerId WRITE setProcessedServerId NOTIFY processedServerIdChanged) Q_PROPERTY(int processedContainerIndex READ getProcessedContainerIndex WRITE setProcessedContainerIndex NOTIFY processedContainerIndexChanged) @@ -87,6 +87,8 @@ public slots: bool isServerRenewalAvailable(const QString &serverId) const; bool isServerSubscriptionExpired(const QString &serverId) const; bool isServerSubscriptionExpiringSoon(const QString &serverId) const; + + bool isServerContainXRayConfigs(const QString &serverId) const; QString getProcessedServerId() const; void setProcessedServerId(const QString &serverId); diff --git a/client/ui/qml/Components/ServersListView.qml b/client/ui/qml/Components/ServersListView.qml index 75512c306..16b9760c6 100644 --- a/client/ui/qml/Components/ServersListView.qml +++ b/client/ui/qml/Components/ServersListView.qml @@ -121,7 +121,7 @@ ListViewType { PageController.goToPage(PageEnum.PageSettingsApiServerInfo) } - } else if (ServersModel.getProcessedServerData("isXRayConfigSelectionAvailable")) { + } else if (ServersUiController.isServerContainXRayConfigs(ServersUiController.processedServerId)) { PageController.goToPage(PageEnum.PageSettingsXRayAvailableConfigs) } else { PageController.goToPage(PageEnum.PageSettingsServerInfo) diff --git a/client/ui/qml/Pages2/PageHome.qml b/client/ui/qml/Pages2/PageHome.qml index 7fbaf110f..55b558e50 100644 --- a/client/ui/qml/Pages2/PageHome.qml +++ b/client/ui/qml/Pages2/PageHome.qml @@ -359,7 +359,7 @@ PageType { PageController.goToPage(PageEnum.PageSettingsApiServerInfo) } - } else if (ServersModel.getProcessedServerData("isXRayConfigSelectionAvailable")) { + } else if (ServersUiController.isServerContainXRayConfigs(ServersUiController.processedServerId)) { PageController.goToPage(PageEnum.PageSettingsXRayAvailableConfigs) } else { PageController.goToPage(PageEnum.PageSettingsServerInfo) diff --git a/client/ui/qml/Pages2/PageSettingsXRayAvailableConfigs.qml b/client/ui/qml/Pages2/PageSettingsXRayAvailableConfigs.qml index 5b7d28194..48a06eb30 100644 --- a/client/ui/qml/Pages2/PageSettingsXRayAvailableConfigs.qml +++ b/client/ui/qml/Pages2/PageSettingsXRayAvailableConfigs.qml @@ -19,10 +19,26 @@ PageType { property var processedServer + Connections { + target: PageController + + function onGoToPageSettingsServerServices() { + tabBar.setCurrentIndex(root.pageSettingsServerServices) + } + } + + Connections { + target: ServersUiController + + function onProcessedServerIdChanged() { + root.processedServer = proxyServersModel.get(0) + } + } + Connections { target: ServersModel - function onProcessedServerChanged() { + function onModelReset() { root.processedServer = proxyServersModel.get(0) } } @@ -34,8 +50,8 @@ PageType { sourceModel: ServersModel filters: [ ValueFilter { - roleName: "isCurrentlyProcessed" - value: true + roleName: "serverId" + value: ServersUiController.processedServerId } ] diff --git a/client/ui/qml/Pages2/PageSettingsXRayServerInfo.qml b/client/ui/qml/Pages2/PageSettingsXRayServerInfo.qml index 088eeea66..3c8483c79 100644 --- a/client/ui/qml/Pages2/PageSettingsXRayServerInfo.qml +++ b/client/ui/qml/Pages2/PageSettingsXRayServerInfo.qml @@ -19,10 +19,26 @@ PageType { property var processedServer + Connections { + target: PageController + + function onGoToPageSettingsServerServices() { + tabBar.setCurrentIndex(root.pageSettingsServerServices) + } + } + + Connections { + target: ServersUiController + + function onProcessedServerIdChanged() { + root.processedServer = proxyServersModel.get(0) + } + } + Connections { target: ServersModel - function onProcessedServerChanged() { + function onModelReset() { root.processedServer = proxyServersModel.get(0) } } @@ -34,8 +50,8 @@ PageType { sourceModel: ServersModel filters: [ ValueFilter { - roleName: "isCurrentlyProcessed" - value: true + roleName: "serverId" + value: ServersUiController.processedServerId } ] @@ -109,7 +125,7 @@ PageType { var noButtonText = qsTr("Cancel") var yesButtonFunction = function() { - if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { + if (ServersUiController.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { PageController.showNotificationMessage(qsTr("Cannot reload config during active connection")) } else { PageController.showBusyIndicator(true) @@ -147,7 +163,7 @@ PageType { var noButtonText = qsTr("Cancel") var yesButtonFunction = function() { - if (ServersModel.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { + if (ServersUiController.isDefaultServerCurrentlyProcessed() && ConnectionController.isConnected) { PageController.showNotificationMessage(qsTr("Cannot remove server during active connection")) } else { PageController.showBusyIndicator(true)