// // UserDefaults.swift // LoopFollow // // Created by Jon Fawcett on 6/4/20. // Copyright © 2020 Jon Fawcett. All rights reserved. // import Foundation import UIKit class UserDefaultsRepository { // DisplayValues total static let infoDataTotal = UserDefaultsValue(key: "infoDataTotal", default: 0) static let infoNames = UserDefaultsValue<[String]>(key: "infoNames", default: [ "IOB", "COB", "Basal", "Override", "Battery", "Pump", "SAGE", "CAGE", "Rec. Bolus", "Pred. Min-Max"]) static let infoSort = UserDefaultsValue<[Int]>(key: "infoSort", default: [0,1,2,3,4,5,6,7,8,9]) static let infoVisible = UserDefaultsValue<[Bool]>(key: "infoVisible", default: [true,true,true,true,true,true,true,true,true,true]) // Nightscout Settings static let url = UserDefaultsValue(key: "url", default: "") static let token = UserDefaultsValue(key: "token", default: "") static let units = UserDefaultsValue(key: "units", default: "mg/dL") // Dexcom Share Settings static let shareUserName = UserDefaultsValue(key: "shareUserName", default: "") static let sharePassword = UserDefaultsValue(key: "sharePassword", default: "") static let shareServer = UserDefaultsValue(key: "shareServer", default: "US") // Graph Settings static let chartScaleX = UserDefaultsValue(key: "chartScaleX", default: 18.0) static let showDots = UserDefaultsValue(key: "showDots", default: true) static let showLines = UserDefaultsValue(key: "showLines", default: true) static let offsetCarbsBolus = UserDefaultsValue(key: "offsetCarbsBolus", default: true) static let hoursToLoad = UserDefaultsValue(key: "hoursToLoad", default: 24) static let predictionToLoad = UserDefaultsValue(key: "predictionToLoad", default: 1) static let minBasalScale = UserDefaultsValue(key: "minBasalScale", default: 5.0) static let minBGScale = UserDefaultsValue(key: "minBGScale", default: 250.0) static let minBGValue = UserDefaultsValue(key: "minBGValue", default: 40.0) static let overrideDisplayLocation = UserDefaultsValue(key: "overrideDisplayLocation", default: 40.0) static let lowLine = UserDefaultsValue(key: "lowLine", default: 70.0) static let highLine = UserDefaultsValue(key: "highLine", default: 180.0) // General Settings static let colorBGText = UserDefaultsValue(key: "colorBGText", default: true) static let showStats = UserDefaultsValue(key: "showStats", default: true) static let showSmallGraph = UserDefaultsValue(key: "showSmallGraph", default: true) static let speakBG = UserDefaultsValue(key: "speakBG", default: false) static let backgroundRefreshFrequency = UserDefaultsValue(key: "backgroundRefreshFrequency", default: 1) static let backgroundRefresh = UserDefaultsValue(key: "backgroundRefresh", default: true) static let appBadge = UserDefaultsValue(key: "appBadge", default: true) static let dimScreenWhenIdle = UserDefaultsValue(key: "dimScreenWhenIdle", default: 0) static let forceDarkMode = UserDefaultsValue(key: "forceDarkMode", default: true) static let persistentNotification = UserDefaultsValue(key: "persistentNotification", default: false) static let persistentNotificationLastBGTime = UserDefaultsValue(key: "persistentNotificationLastBGTime", default: 0) static let screenlockSwitchState = UserDefaultsValue( key: "screenlockSwitchState", default: UIApplication.shared.isIdleTimerDisabled, onChange: { screenlock in UIApplication.shared.isIdleTimerDisabled = screenlock }) // Debug Settings static let downloadBasal = UserDefaultsValue(key: "downloadBasal", default: true) static let downloadBolus = UserDefaultsValue(key: "downloadBolus", default: true) static let downloadCarbs = UserDefaultsValue(key: "downloadCarbs", default: true) static let downloadPrediction = UserDefaultsValue(key: "downloadPrediction", default: true) static let graphBasal = UserDefaultsValue(key: "graphBasal", default: true) static let graphBolus = UserDefaultsValue(key: "graphBolus", default: true) static let graphCarbs = UserDefaultsValue(key: "graphCarbs", default: true) static let graphPrediction = UserDefaultsValue(key: "graphPrediction", default: true) static let debugLog = UserDefaultsValue(key: "debugLog", default: false) static let viewRefreshDelay = UserDefaultsValue(key: "viewRefreshDelay", default: 15.0) // Watch Calendar Settings static let calendarIdentifier = UserDefaultsValue(key: "calendarIdentifier", default: "") static let savedEventID = UserDefaultsValue(key: "savedEventID", default: "") static let lastCalendarStartDate = UserDefaultsValue(key: "lastCalendarStartDate", default: nil) static let writeCalendarEvent = UserDefaultsValue(key: "writeCalendarEvent", default: false) static let watchLine1 = UserDefaultsValue(key: "watchLine1", default: "%BG% %DIRECTION% %DELTA% %MINAGO%") static let watchLine2 = UserDefaultsValue(key: "watchLine2", default: "C:%COB% I:%IOB% B:%BASAL%") // Alarm Settings static let systemOutputVolume = UserDefaultsValue(key: "systemOutputVolume", default: 0.5) static let fadeInTimeInterval = UserDefaultsValue(key: "fadeInTimeInterval", default: 0) static let vibrate = UserDefaultsValue(key: "vibrate", default: true) static let overrideSystemOutputVolume = UserDefaultsValue(key: "overrideSystemOutputVolume", default: true) static let forcedOutputVolume = UserDefaultsValue(key: "forcedOutputVolume", default: 0.5) // Alerts static let quietHourStart = UserDefaultsValue(key: "quietHourStart", default: nil) static let quietHourEnd = UserDefaultsValue(key: "quietHourEnd", default: nil) static let snoozedBGReadingTime = UserDefaultsValue(key: "snoozedBGReadingTime", default: 0) static let alertCageInsertTime = UserDefaultsValue(key: "alertCageInsertTime", default: 0) static let alertSageInsertTime = UserDefaultsValue(key: "alertSageInsertTime", default: 0) static let alertSnoozeAllTime = UserDefaultsValue(key: "alertSnoozeAllTime", default: nil) static let alertSnoozeAllIsSnoozed = UserDefaultsValue(key: "alertSnoozeAllIsSnoozed", default: false) static let alertUrgentLowActive = UserDefaultsValue(key: "alertUrgentLowActive", default: false) static let alertUrgentLowBG = UserDefaultsValue(key: "alertUrgentLowBG", default: 55.0) static let alertUrgentLowSnooze = UserDefaultsValue(key: "alertUrgentLowSnooze", default: 5) static let alertUrgentLowSnoozedTime = UserDefaultsValue(key: "alertUrgentLowSnoozedTime", default: nil) static let alertUrgentLowIsSnoozed = UserDefaultsValue(key: "alertUrgentLowIsSnoozed", default: false) static let alertUrgentLowRepeat = UserDefaultsValue(key: "alertUrgentLowRepeat", default: true) static let alertUrgentLowSound = UserDefaultsValue(key: "alertUrgentLowSound", default: "Indeed") static let alertLowActive = UserDefaultsValue(key: "alertLowActive", default: false) static let alertLowBG = UserDefaultsValue(key: "alertLowBG", default: 70.0) static let alertLowSnooze = UserDefaultsValue(key: "alertLowSnooze", default: 5) static let alertLowSnoozedTime = UserDefaultsValue(key: "alertLowSnoozedTime", default: nil) static let alertLowIsSnoozed = UserDefaultsValue(key: "alertLowIsSnoozed", default: false) static let alertLowRepeat = UserDefaultsValue(key: "alertLowRepeat", default: true) static let alertLowSound = UserDefaultsValue(key: "alertLowSound", default: "Indeed") static let alertHighActive = UserDefaultsValue(key: "alertHighActive", default: false) static let alertHighBG = UserDefaultsValue(key: "alertHighBG", default: 180.0) static let alertHighPersistent = UserDefaultsValue(key: "alertHighPersistent", default: 60) static let alertHighSnooze = UserDefaultsValue(key: "alertHighSnooze", default: 60) static let alertHighSnoozedTime = UserDefaultsValue(key: "alertHighSnoozedTime", default: nil) static let alertHighIsSnoozed = UserDefaultsValue(key: "alertHighIsSnoozed", default: false) static let alertHighRepeat = UserDefaultsValue(key: "alertHighRepeat", default: true) static let alertHighSound = UserDefaultsValue(key: "alertHighSound", default: "Indeed") static let alertUrgentHighActive = UserDefaultsValue(key: "alertUrgentHighActive", default: false) static let alertUrgentHighBG = UserDefaultsValue(key: "alertUrgentHighBG", default: 250.0) static let alertUrgentHighSnooze = UserDefaultsValue(key: "alertUrgentHighSnooze", default: 30) static let alertUrgentHighSnoozedTime = UserDefaultsValue(key: "alertUrgentHighSnoozedTime", default: nil) static let alertUrgentHighIsSnoozed = UserDefaultsValue(key: "alertUrgentHighIsSnoozed", default: false) static let alertUrgentHighRepeat = UserDefaultsValue(key: "alertUrgentHighRepeat", default: true) static let alertUrgentHighSound = UserDefaultsValue(key: "alertUrgentHighSound", default: "Indeed") static let alertFastDropActive = UserDefaultsValue(key: "alertFastDropDeltaActive", default: false) static let alertFastDropSnooze = UserDefaultsValue(key: "alertFastDropDeltaSnooze", default: 10) static let alertFastDropDelta = UserDefaultsValue(key: "alertFastDropDelta", default: 10.0) static let alertFastDropReadings = UserDefaultsValue(key: "alertFastDropReadings", default: 3) static let alertFastDropUseLimit = UserDefaultsValue(key: "alertFastDropUseLimit", default: false) static let alertFastDropBelowBG = UserDefaultsValue(key: "alertFastDropBelowBG", default: 120.0) static let alertFastDropSnoozedTime = UserDefaultsValue(key: "alertFastDropSnoozedTime", default: nil) static let alertFastDropIsSnoozed = UserDefaultsValue(key: "alertFastDropIsSnoozed", default: false) static let alertFastDropRepeat = UserDefaultsValue(key: "alertFastDropRepeat", default: true) static let alertFastDropSound = UserDefaultsValue(key: "alertFastDropSound", default: "Indeed") static let alertFastRiseActive = UserDefaultsValue(key: "alertFastRiseDeltaActive", default: false) static let alertFastRiseSnooze = UserDefaultsValue(key: "alertFastRiseDeltaSnooze", default: 10) static let alertFastRiseDelta = UserDefaultsValue(key: "alertFastRiseDelta", default: 10.0) static let alertFastRiseReadings = UserDefaultsValue(key: "alertFastRiseReadings", default: 3) static let alertFastRiseUseLimit = UserDefaultsValue(key: "alertFastRiseUseLimit", default: false) static let alertFastRiseAboveBG = UserDefaultsValue(key: "alertFastRiseAboveBG", default: 200.0) static let alertFastRiseSnoozedTime = UserDefaultsValue(key: "alertFastRiseSnoozedTime", default: nil) static let alertFastRiseIsSnoozed = UserDefaultsValue(key: "alertFastRiseIsSnoozed", default: false) static let alertFastRiseRepeat = UserDefaultsValue(key: "alertFastRiseRepeat", default: true) static let alertFastRiseSound = UserDefaultsValue(key: "alertFastRiseSound", default: "Indeed") static let alertMissedReadingActive = UserDefaultsValue(key: "alertMissedReadingActive", default: false) static let alertMissedReading = UserDefaultsValue(key: "alertMissedReading", default: 30) static let alertMissedReadingSnooze = UserDefaultsValue(key: "alertMissedReadingSnooze", default: 30) static let alertMissedReadingSnoozedTime = UserDefaultsValue(key: "alertMissedReadingSnoozedTime", default: nil) static let alertMissedReadingIsSnoozed = UserDefaultsValue(key: "alertMissedReadingIsSnoozed", default: false) static let alertMissedReadingRepeat = UserDefaultsValue(key: "alertMissedReadingRepeat", default: true) static let alertMissedReadingSound = UserDefaultsValue(key: "alertMissedReadingSound", default: "Indeed") static let alertNotLoopingActive = UserDefaultsValue(key: "alertNotLoopingActive", default: false) static let alertNotLooping = UserDefaultsValue(key: "alertNotLooping", default: 30) static let alertNotLoopingSnooze = UserDefaultsValue(key: "alertNotLoopingSnooze", default: 30) static let alertNotLoopingUseLimits = UserDefaultsValue(key: "alertNotLoopingUseLimits", default: false) static let alertNotLoopingLowerLimit = UserDefaultsValue(key: "alertNotLoopingBelowBG", default: 100.0) static let alertNotLoopingUpperLimit = UserDefaultsValue(key: "alertNotLoopingAboveBG", default: 160.0) static let alertNotLoopingSnoozedTime = UserDefaultsValue(key: "alertNotLoopingSnoozedTime", default: nil) static let alertNotLoopingIsSnoozed = UserDefaultsValue(key: "alertNotLoopingIsSnoozed", default: false) static let alertNotLoopingRepeat = UserDefaultsValue(key: "alertNotLoopingRepeat", default: true) static let alertNotLoopingSound = UserDefaultsValue(key: "alertNotLoopingSound", default: "Indeed") static let alertLastLoopTime = UserDefaultsValue(key: "alertLastLoopTime", default: 0) static let alertMissedBolusActive = UserDefaultsValue(key: "alertMissedBolusActive", default: false) static let alertMissedBolus = UserDefaultsValue(key: "alertMissedBolus", default: 10) static let alertMissedBolusSnooze = UserDefaultsValue(key: "alertMissedBolusSnooze", default: 10) static let alertMissedBolusPrebolus = UserDefaultsValue(key: "alertMissedBolusPrebolus", default: 20) static let alertMissedBolusIgnoreBolus = UserDefaultsValue(key: "alertMissedBolusIgnoreBolus", default: 0.5) static let alertMissedBolusLowGrams = UserDefaultsValue(key: "alertMissedBolusLowGrams", default: 10) static let alertMissedBolusLowGramsBG = UserDefaultsValue(key: "alertMissedBolusLowGramsBG", default: 70.0) static let alertMissedBolusSnoozedTime = UserDefaultsValue(key: "alertMissedBolusSnoozedTime", default: nil) static let alertMissedBolusIsSnoozed = UserDefaultsValue(key: "alertMissedBolusIsSnoozed", default: false) static let alertMissedBolusQuiet = UserDefaultsValue(key: "alertMissedBolusQuiet", default: false) static let alertMissedBolusRepeat = UserDefaultsValue(key: "alertMissedBolusRepeat", default: false) static let alertMissedBolusSound = UserDefaultsValue(key: "alertMissedBolusSound", default: "Indeed") static let alertSAGEActive = UserDefaultsValue(key: "alertSAGEActive", default: false) static let alertSAGE = UserDefaultsValue(key: "alertSAGE", default: 8) //Hours static let alertSAGEQuiet = UserDefaultsValue(key: "alertSAGEQuiet", default: false) static let alertSAGERepeat = UserDefaultsValue(key: "alertSAGERepeat", default: false) static let alertSAGESnooze = UserDefaultsValue(key: "alertSAGESnooze", default: 2) //Hours static let alertSAGESnoozedTime = UserDefaultsValue(key: "alertSAGESnoozedTime", default: nil) static let alertSAGEIsSnoozed = UserDefaultsValue(key: "alertSAGEIsSnoozed", default: false) static let alertSAGESound = UserDefaultsValue(key: "alertSAGESound", default: "Indeed") static let alertCAGEActive = UserDefaultsValue(key: "alertCAGEActive", default: false) static let alertCAGE = UserDefaultsValue(key: "alertCAGE", default: 4) //Hours static let alertCAGEQuiet = UserDefaultsValue(key: "alertCAGEQuiet", default: false) static let alertCAGERepeat = UserDefaultsValue(key: "alertCAGERepeat", default: false) static let alertCAGESnooze = UserDefaultsValue(key: "alertCAGESnooze", default: 2) //Hours static let alertCAGESnoozedTime = UserDefaultsValue(key: "alertCAGESnoozedTime", default: nil) static let alertCAGEIsSnoozed = UserDefaultsValue(key: "alertCAGEIsSnoozed", default: false) static let alertCAGESound = UserDefaultsValue(key: "alertCAGESound", default: "Indeed") static let alertAppInactive = UserDefaultsValue(key: "alertAppInactive", default: false) static let alertTemporaryActive = UserDefaultsValue(key: "alertTemporaryActive", default: false) static let alertTemporaryBelow = UserDefaultsValue(key: "alertTemporaryBelow", default: true) static let alertTemporaryBG = UserDefaultsValue(key: "alertTemporaryBG", default: 90.0) static let alertTemporaryBGRepeat = UserDefaultsValue(key: "alertTemporaryBGRepeat", default: true) static let alertTemporarySound = UserDefaultsValue(key: "alertTemporarySound", default: "Indeed") static let alertOverrideStart = UserDefaultsValue(key: "alertOverrideStart", default: false) static let alertOverrideStartQuiet = UserDefaultsValue(key: "alertOverrideStartQuiet", default: false) static let alertOverrideStartRepeat = UserDefaultsValue(key: "alertOverrideStartRepeat", default: false) static let alertOverrideStartSound = UserDefaultsValue(key: "alertOverrideStartSound", default: "Alert_Tone_Busy") static let alertOverrideStartSnoozedTime = UserDefaultsValue(key: "alertOverrideStartSnoozedTime", default: nil) static let alertOverrideStartIsSnoozed = UserDefaultsValue(key: "alertOverrideStartIsSnoozed", default: false) static let alertOverrideEnd = UserDefaultsValue(key: "alertOverrideEnd", default: false) static let alertOverrideEndQuiet = UserDefaultsValue(key: "alertOverrideEndQuiet", default: false) static let alertOverrideEndRepeat = UserDefaultsValue(key: "alertOverrideEndRepeat", default: false) static let alertOverrideEndSound = UserDefaultsValue(key: "alertOverrideEndSound", default: "Ending_Reached") static let alertOverrideEndSnoozedTime = UserDefaultsValue(key: "alertOverrideEndSnoozedTime", default: nil) static let alertOverrideEndIsSnoozed = UserDefaultsValue(key: "alertOverrideEndIsSnoozed", default: false) }