Просмотр исходного кода

Add: Show/Hide NS and Dex settings to prevent accidental modification

Jon Fawcett 4 лет назад
Родитель
Сommit
abbadfe8a5

+ 22 - 0
LoopFollow/ViewControllers/SettingsViewController.swift

@@ -40,6 +40,8 @@ class SettingsViewController: FormViewController {
         if UserDefaultsRepository.forceDarkMode.value {
         if UserDefaultsRepository.forceDarkMode.value {
             overrideUserInterfaceStyle = .dark
             overrideUserInterfaceStyle = .dark
         }
         }
+       UserDefaultsRepository.showNS.value = false
+       UserDefaultsRepository.showDex.value = false
     
     
         var expiration: Date = Date()
         var expiration: Date = Date()
         if let provision = MobileProvision.read() {
         if let provision = MobileProvision.read() {
@@ -48,10 +50,18 @@ class SettingsViewController: FormViewController {
                         
                         
         form
         form
         +++ Section(header: "Nightscout Settings", footer: "Changing Nightscout settings requires an app restart.")
         +++ Section(header: "Nightscout Settings", footer: "Changing Nightscout settings requires an app restart.")
+       <<< SwitchRow("showNS"){ row in
+       row.title = "Show Nightscout Settings"
+       row.value = UserDefaultsRepository.showNS.value
+       }.onChange { [weak self] row in
+               guard let value = row.value else { return }
+               UserDefaultsRepository.showNS.value = value
+       }
         <<< TextRow(){ row in
         <<< TextRow(){ row in
             row.title = "URL"
             row.title = "URL"
             row.placeholder = "https://mycgm.herokuapp.com"
             row.placeholder = "https://mycgm.herokuapp.com"
             row.value = UserDefaultsRepository.url.value
             row.value = UserDefaultsRepository.url.value
+            row.hidden = "$showNS == false"
         }.cellSetup { (cell, row) in
         }.cellSetup { (cell, row) in
             cell.textField.autocorrectionType = .no
             cell.textField.autocorrectionType = .no
         }.onChange { row in
         }.onChange { row in
@@ -74,6 +84,7 @@ class SettingsViewController: FormViewController {
             row.title = "NS Token"
             row.title = "NS Token"
             row.placeholder = "Leave blank if not using tokens"
             row.placeholder = "Leave blank if not using tokens"
             row.value = UserDefaultsRepository.token.value
             row.value = UserDefaultsRepository.token.value
+            row.hidden = "$showNS == false"
         }.cellSetup { (cell, row) in
         }.cellSetup { (cell, row) in
             cell.textField.autocorrectionType = .no
             cell.textField.autocorrectionType = .no
         }.onChange { row in
         }.onChange { row in
@@ -88,14 +99,23 @@ class SettingsViewController: FormViewController {
             row.title = "Units"
             row.title = "Units"
             row.options = ["mg/dL", "mmol/L"]
             row.options = ["mg/dL", "mmol/L"]
             row.value = UserDefaultsRepository.units.value
             row.value = UserDefaultsRepository.units.value
+            row.hidden = "$showNS == false"
         }.onChange { row in
         }.onChange { row in
             guard let value = row.value else { return }
             guard let value = row.value else { return }
             UserDefaultsRepository.units.value = value
             UserDefaultsRepository.units.value = value
         }
         }
         +++ Section("Dexcom Settings")
         +++ Section("Dexcom Settings")
+       <<< SwitchRow("showDex"){ row in
+       row.title = "Show Dexcom Settings"
+       row.value = UserDefaultsRepository.showDex.value
+       }.onChange { [weak self] row in
+               guard let value = row.value else { return }
+               UserDefaultsRepository.showDex.value = value
+       }
         <<< TextRow(){ row in
         <<< TextRow(){ row in
             row.title = "User Name"
             row.title = "User Name"
             row.value = UserDefaultsRepository.shareUserName.value
             row.value = UserDefaultsRepository.shareUserName.value
+            row.hidden = "$showDex == false"
         }.cellSetup { (cell, row) in
         }.cellSetup { (cell, row) in
             cell.textField.autocorrectionType = .no
             cell.textField.autocorrectionType = .no
         }.onChange { row in
         }.onChange { row in
@@ -109,6 +129,7 @@ class SettingsViewController: FormViewController {
         <<< TextRow(){ row in
         <<< TextRow(){ row in
             row.title = "Password"
             row.title = "Password"
             row.value = UserDefaultsRepository.sharePassword.value
             row.value = UserDefaultsRepository.sharePassword.value
+            row.hidden = "$showDex == false"
         }.cellSetup { (cell, row) in
         }.cellSetup { (cell, row) in
             cell.textField.autocorrectionType = .no
             cell.textField.autocorrectionType = .no
             cell.textField.isSecureTextEntry = true
             cell.textField.isSecureTextEntry = true
@@ -124,6 +145,7 @@ class SettingsViewController: FormViewController {
             row.title = "Server"
             row.title = "Server"
             row.options = ["US", "NON-US"]
             row.options = ["US", "NON-US"]
             row.value = UserDefaultsRepository.shareServer.value
             row.value = UserDefaultsRepository.shareServer.value
+            row.hidden = "$showDex == false"
         }.onChange { row in
         }.onChange { row in
             guard let value = row.value else { return }
             guard let value = row.value else { return }
             UserDefaultsRepository.shareServer.value = value
             UserDefaultsRepository.shareServer.value = value

+ 2 - 0
LoopFollow/repository/UserDefaults.swift

@@ -34,11 +34,13 @@ class UserDefaultsRepository {
     static let infoVisible = UserDefaultsValue<[Bool]>(key: "infoVisible", default: [true,true,true,true,true,true,true,true,true,true])
     static let infoVisible = UserDefaultsValue<[Bool]>(key: "infoVisible", default: [true,true,true,true,true,true,true,true,true,true])
     
     
     // Nightscout Settings
     // Nightscout Settings
+    static let showNS = UserDefaultsValue<Bool>(key: "showNS", default: false)
     static let url = UserDefaultsValue<String>(key: "url", default: "")
     static let url = UserDefaultsValue<String>(key: "url", default: "")
     static let token = UserDefaultsValue<String>(key: "token", default: "")
     static let token = UserDefaultsValue<String>(key: "token", default: "")
     static let units = UserDefaultsValue<String>(key: "units", default: "mg/dL")
     static let units = UserDefaultsValue<String>(key: "units", default: "mg/dL")
     
     
     // Dexcom Share Settings
     // Dexcom Share Settings
+    static let showDex = UserDefaultsValue<Bool>(key: "showDex", default: false)
     static let shareUserName = UserDefaultsValue<String>(key: "shareUserName", default: "")
     static let shareUserName = UserDefaultsValue<String>(key: "shareUserName", default: "")
     static let sharePassword = UserDefaultsValue<String>(key: "sharePassword", default: "")
     static let sharePassword = UserDefaultsValue<String>(key: "sharePassword", default: "")
     static let shareServer = UserDefaultsValue<String>(key: "shareServer", default: "US")
     static let shareServer = UserDefaultsValue<String>(key: "shareServer", default: "US")