Skip to content

Commit b04d36e

Browse files
committed
feat: add start vpn on launch setting
1 parent b7ccbca commit b04d36e

File tree

3 files changed

+18
-2
lines changed

3 files changed

+18
-2
lines changed

Diff for: Coder Desktop/Coder Desktop/Coder_DesktopApp.swift

+3
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,9 @@ class AppDelegate: NSObject, NSApplicationDelegate {
5555
if await !vpn.loadNetworkExtensionConfig() {
5656
state.reconfigure()
5757
}
58+
if state.startVPNOnLaunch {
59+
await vpn.start()
60+
}
5861
}
5962
}
6063

Diff for: Coder Desktop/Coder Desktop/State.swift

+8
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,13 @@ class AppState: ObservableObject {
5353
}
5454
}
5555

56+
@Published var startVPNOnLaunch: Bool = UserDefaults.standard.bool(forKey: Keys.startVPNOnLaunch) {
57+
didSet {
58+
guard persistent else { return }
59+
UserDefaults.standard.set(startVPNOnLaunch, forKey: Keys.startVPNOnLaunch)
60+
}
61+
}
62+
5663
func tunnelProviderProtocol() -> NETunnelProviderProtocol? {
5764
if !hasSession { return nil }
5865
let proto = NETunnelProviderProtocol()
@@ -132,6 +139,7 @@ class AppState: ObservableObject {
132139
static let useLiteralHeaders = "UseLiteralHeaders"
133140
static let literalHeaders = "LiteralHeaders"
134141
static let stopVPNOnQuit = "StopVPNOnQuit"
142+
static let startVPNOnLaunch = "StartVPNOnLaunch"
135143
}
136144
}
137145

Diff for: Coder Desktop/Coder Desktop/Views/Settings/GeneralTab.swift

+7-2
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,16 @@ struct GeneralTab: View {
66
var body: some View {
77
Form {
88
Section {
9-
LaunchAtLogin.Toggle("Launch at Login")
9+
LaunchAtLogin.Toggle("Launch at login")
1010
}
1111
Section {
1212
Toggle(isOn: $state.stopVPNOnQuit) {
13-
Text("Stop VPN on Quit")
13+
Text("Stop VPN on quit")
14+
}
15+
}
16+
Section {
17+
Toggle(isOn: $state.startVPNOnLaunch) {
18+
Text("Start VPN on launch")
1419
}
1520
}
1621
}.formStyle(.grouped)

0 commit comments

Comments
 (0)