@@ -11,22 +11,32 @@ import OrderedCollections
1111class NotificationDebuggingDefaultsDB : ObservableObject {
1212 @defaultsDB ( " lastAppexStart " )
1313 var lastAppexStart : Date ?
14+
15+ @defaultsDB ( " selectedPushServer " )
16+ var selectedPushServer : String
1417}
1518
1619struct NotificationDebugging : View {
1720 private let applePushEnabled : Bool
1821 private let applePushToken : String
1922 private let xmppAccountInfo : [ xmpp ]
20-
23+
2124 private let availablePushServers : Dictionary < String , String >
22-
25+
2326 @State private var pushPermissionEnabled = false // state because we get this value through an async call
2427 @State private var showPushToken = false
25-
26- @State private var selectedPushServer : String
2728
2829 @ObservedObject var notificationDebuggingDefaultsDB = NotificationDebuggingDefaultsDB ( )
30+
31+ init ( ) {
32+ self . applePushEnabled = MLXMPPManager . sharedInstance ( ) . hasAPNSToken;
33+ self . applePushToken = MLXMPPManager . sharedInstance ( ) . pushToken;
34+ self . xmppAccountInfo = MLXMPPManager . sharedInstance ( ) . connectedXMPP as! [ xmpp ]
2935
36+ // push server selector
37+ self . availablePushServers = HelperTools . getAvailablePushServers ( )
38+ }
39+
3040 var body : some View {
3141 Form {
3242 Group {
@@ -83,14 +93,13 @@ struct NotificationDebugging: View {
8393 }
8494 }
8595 Section ( header: Text ( " Pushserver Region " ) . font ( . title3) ) {
86- Picker ( selection: $selectedPushServer, label: Text ( " Push Server " ) ) {
96+ Picker ( selection: $notificationDebuggingDefaultsDB . selectedPushServer, label: Text ( " Push Server " ) ) {
8797 ForEach ( self . availablePushServers. sorted ( by: > ) , id: \. key) { pushServerFqdn, pushServerName in
8898 Text ( pushServerName) . tag ( pushServerFqdn)
8999 }
90100 } . pickerStyle ( . menu) //.menuStyle(.borderlessButton)
91- . onChange ( of: selectedPushServer) { pushServerFqdn in
92- DDLogDebug ( " Selected \( pushServerFqdn) as push server " )
93- HelperTools . defaultsDB ( ) . setValue ( pushServerFqdn, forKey: " selectedPushServer " )
101+ . onChange ( of: notificationDebuggingDefaultsDB. selectedPushServer) { pushServerFqdn in
102+ DDLogDebug ( " Selected \( pushServerFqdn) as push server... " )
94103 // enable push again to switch to the selected server
95104 for account in self . xmppAccountInfo {
96105 account. enablePush ( )
@@ -113,16 +122,6 @@ struct NotificationDebugging: View {
113122 }
114123 } ) ;
115124 }
116-
117- init ( ) {
118- self . applePushEnabled = MLXMPPManager . sharedInstance ( ) . hasAPNSToken;
119- self . applePushToken = MLXMPPManager . sharedInstance ( ) . pushToken;
120- self . xmppAccountInfo = MLXMPPManager . sharedInstance ( ) . connectedXMPP as! [ xmpp ]
121-
122- // push server selector
123- self . availablePushServers = HelperTools . getAvailablePushServers ( )
124- self . selectedPushServer = HelperTools . defaultsDB ( ) . object ( forKey: " selectedPushServer " ) as! String
125- }
126125}
127126
128127struct PushSettings_Previews : PreviewProvider {
0 commit comments