From 32c3b758afc4582a51dbe3251a27be8108b5f0b1 Mon Sep 17 00:00:00 2001 From: Yaroslav Yashin Date: Tue, 13 May 2025 23:30:28 +0300 Subject: [PATCH] feat: add platform-specific close window behavior for macOS App Store build with Network Extension Closes: QA-12 --- client/ui/controllers/pageController.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client/ui/controllers/pageController.cpp b/client/ui/controllers/pageController.cpp index 2ded5f55..e162f66f 100644 --- a/client/ui/controllers/pageController.cpp +++ b/client/ui/controllers/pageController.cpp @@ -1,6 +1,9 @@ #include "pageController.h" #include "utils/converter.h" #include "core/errorstrings.h" +#if defined(MACOS_NE) +#include "platforms/ios/ios_controller.h" +#endif #if defined(Q_OS_ANDROID) || defined(Q_OS_IOS) || defined(MACOS_NE) #include @@ -58,6 +61,21 @@ void PageController::closeWindow() { #ifdef Q_OS_ANDROID qApp->quit(); + +#elif defined(MACOS_NE) + // macOS App Store build with Network Extension: hide UI, then gracefully disconnect NE and quit + emit hideMainWindow(); + { + auto ctrl = IosController::Instance(); + // when NE state changes to Disconnected, quit app + connect(ctrl, &IosController::connectionStateChanged, this, [=](Vpn::ConnectionState s) { + if (s == Vpn::ConnectionState::Disconnected) { + qApp->quit(); + } + }); + ctrl->disconnectVpn(); + } + #else if (m_serversModel->getServersCount() == 0) { qApp->quit();