@@ -32,15 +32,15 @@ class AppState: ObservableObject {
3232
3333 @Published var useLiteralHeaders : Bool = UserDefaults . standard. bool ( forKey: Keys . useLiteralHeaders) {
3434 didSet {
35- if let onChange { onChange ( tunnelProviderProtocol ( ) ) }
35+ reconfigure ( )
3636 guard persistent else { return }
3737 UserDefaults . standard. set ( useLiteralHeaders, forKey: Keys . useLiteralHeaders)
3838 }
3939 }
4040
4141 @Published var literalHeaders : [ LiteralHeader ] {
4242 didSet {
43- if let onChange { onChange ( tunnelProviderProtocol ( ) ) }
43+ reconfigure ( )
4444 guard persistent else { return }
4545 try ? UserDefaults . standard. set ( JSONEncoder ( ) . encode ( literalHeaders) , forKey: Keys . literalHeaders)
4646 }
@@ -70,9 +70,14 @@ class AppState: ObservableObject {
7070 private let keychain : Keychain
7171 private let persistent : Bool
7272
73- // This closure must be called when any property used to configure the VPN changes
73+
7474 let onChange : ( ( NETunnelProviderProtocol ? ) -> Void ) ?
7575
76+ // reconfigure must be called when any property used to configure the VPN changes
77+ public func reconfigure( ) {
78+ if let onChange { onChange ( tunnelProviderProtocol ( ) ) }
79+ }
80+
7681 public init ( onChange: ( ( NETunnelProviderProtocol ? ) -> Void ) ? = nil ,
7782 persistent: Bool = true )
7883 {
@@ -97,13 +102,13 @@ class AppState: ObservableObject {
97102 hasSession = true
98103 self . baseAccessURL = baseAccessURL
99104 self . sessionToken = sessionToken
100- if let onChange { onChange ( tunnelProviderProtocol ( ) ) }
105+ reconfigure ( )
101106 }
102107
103108 public func clearSession( ) {
104109 hasSession = false
105110 sessionToken = nil
106- if let onChange { onChange ( tunnelProviderProtocol ( ) ) }
111+ reconfigure ( )
107112 }
108113
109114 private func keychainGet( for key: String ) -> String ? {
0 commit comments