diff --git a/client/core/controllers/selfhosted/installController.cpp b/client/core/controllers/selfhosted/installController.cpp index 6ae3f9298..3aacb2ece 100644 --- a/client/core/controllers/selfhosted/installController.cpp +++ b/client/core/controllers/selfhosted/installController.cpp @@ -234,10 +234,6 @@ ErrorCode InstallController::updateServerConfig(const QString &serverId, DockerC } else if (container == DockerContainer::Telemt) { TelemtInstaller::uploadClientSettingsSnapshot(sshSession, credentials, container, newConfig); } - // Only revoke/clear the cached client profile when the container was reinstalled - // (a fresh client is generated in that case). On a light settings update the - // existing client is reused, so revoking it here would break the admin's own - // config (matches 4.8.15.4, which cleared the profile only on container update). if (reinstallRequired) { clearCachedProfile(serverId, container); } diff --git a/client/core/controllers/selfhosted/usersController.cpp b/client/core/controllers/selfhosted/usersController.cpp index 6ebfaa770..196ae1c26 100644 --- a/client/core/controllers/selfhosted/usersController.cpp +++ b/client/core/controllers/selfhosted/usersController.cpp @@ -703,7 +703,7 @@ ErrorCode UsersController::revokeXray(const int row, ); if (error != ErrorCode::NoError) { logger.error() << "Failed to restart xray container"; - return ErrorCode::NoError; + return error; } return error; diff --git a/client/core/models/protocols/xrayProtocolConfig.cpp b/client/core/models/protocols/xrayProtocolConfig.cpp index 221b49ba7..f9955d4fb 100644 --- a/client/core/models/protocols/xrayProtocolConfig.cpp +++ b/client/core/models/protocols/xrayProtocolConfig.cpp @@ -466,9 +466,6 @@ XrayProtocolConfig XrayProtocolConfig::fromJson(const QJsonObject &json) } } } - // The client id lives inside the native config (outbounds[0].settings.vnext[0].users[0].id). - // Without extracting it here clientId() returns empty, which broke client revocation - // (e.g. "Clear profile" could not find/revoke the entry in the Share list). const QJsonArray outbounds = parsed.value(protocols::xray::outbounds).toArray(); if (!outbounds.isEmpty()) { const QJsonObject settings = outbounds[0].toObject().value(protocols::xray::settings).toObject(); diff --git a/client/ui/controllers/selfhosted/installUiController.cpp b/client/ui/controllers/selfhosted/installUiController.cpp index 28e9f149f..8947f62b0 100644 --- a/client/ui/controllers/selfhosted/installUiController.cpp +++ b/client/ui/controllers/selfhosted/installUiController.cpp @@ -306,10 +306,6 @@ void InstallUiController::updateServerConfig(const QString &serverId, int contai || container == DockerContainer::Xray || container == DockerContainer::SSXray; if (asyncUpdate) { - // serverIsBusy is rendered by PageSetupWizardInstalling (used by Xray/SSXray) - // as "the server is busy installing other software" + a Cancel button, which is - // wrong for a normal settings update. Only MtProxy/Telemt settings pages use this - // signal as a plain in-progress indicator, so scope it to them. const bool emitBusy = container == DockerContainer::MtProxy || container == DockerContainer::Telemt; if (emitBusy) emit serverIsBusy(true);