From be1bc2055aaa237cfef46540c08f0eaf96269e6f Mon Sep 17 00:00:00 2001 From: Ethan Dickson Date: Tue, 11 Mar 2025 18:06:56 +1100 Subject: [PATCH] feat: add start vpn on launch setting --- Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift | 3 +++ Coder-Desktop/Coder-Desktop/State.swift | 8 ++++++++ .../Coder-Desktop/Views/Settings/GeneralTab.swift | 9 +++++++-- 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift b/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift index 1d379e91..23b31a2a 100644 --- a/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift +++ b/Coder-Desktop/Coder-Desktop/Coder_DesktopApp.swift @@ -58,6 +58,9 @@ class AppDelegate: NSObject, NSApplicationDelegate { if await !vpn.loadNetworkExtensionConfig() { state.reconfigure() } + if state.startVPNOnLaunch { + await vpn.start() + } } // TODO: Start the daemon only once a file sync is configured Task { diff --git a/Coder-Desktop/Coder-Desktop/State.swift b/Coder-Desktop/Coder-Desktop/State.swift index 3e723c9f..fd6182e5 100644 --- a/Coder-Desktop/Coder-Desktop/State.swift +++ b/Coder-Desktop/Coder-Desktop/State.swift @@ -54,6 +54,13 @@ class AppState: ObservableObject { } } + @Published var startVPNOnLaunch: Bool = UserDefaults.standard.bool(forKey: Keys.startVPNOnLaunch) { + didSet { + guard persistent else { return } + UserDefaults.standard.set(startVPNOnLaunch, forKey: Keys.startVPNOnLaunch) + } + } + func tunnelProviderProtocol() -> NETunnelProviderProtocol? { if !hasSession { return nil } let proto = NETunnelProviderProtocol() @@ -133,6 +140,7 @@ class AppState: ObservableObject { static let useLiteralHeaders = "UseLiteralHeaders" static let literalHeaders = "LiteralHeaders" static let stopVPNOnQuit = "StopVPNOnQuit" + static let startVPNOnLaunch = "StartVPNOnLaunch" } } diff --git a/Coder-Desktop/Coder-Desktop/Views/Settings/GeneralTab.swift b/Coder-Desktop/Coder-Desktop/Views/Settings/GeneralTab.swift index 27aecabb..532d0f00 100644 --- a/Coder-Desktop/Coder-Desktop/Views/Settings/GeneralTab.swift +++ b/Coder-Desktop/Coder-Desktop/Views/Settings/GeneralTab.swift @@ -6,11 +6,16 @@ struct GeneralTab: View { var body: some View { Form { Section { - LaunchAtLogin.Toggle("Launch at Login") + LaunchAtLogin.Toggle("Launch at login") } Section { Toggle(isOn: $state.stopVPNOnQuit) { - Text("Stop Coder Connect on Quit") + Text("Stop Coder Connect on quit") + } + } + Section { + Toggle(isOn: $state.startVPNOnLaunch) { + Text("Start Coder Connect on launch") } } }.formStyle(.grouped) pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy