Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 84 additions & 8 deletions LoopFollow.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

3 changes: 3 additions & 0 deletions LoopFollow/Application/AppDelegate.swift
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,9 @@ class AppDelegate: UIResponder, UIApplicationDelegate {

UNUserNotificationCenter.current().delegate = self

// Ensure ViewControllerManager is initialized
_ = ViewControllerManager.shared

return true
}

Expand Down
22 changes: 19 additions & 3 deletions LoopFollow/Application/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
Expand Up @@ -505,23 +505,39 @@
</objects>
<point key="canvasLocation" x="-703" y="746"/>
</scene>
<!--Alarms-->
<!--Remote-->
<scene sceneID="sEH-4N-YEn">
<objects>
<viewController storyboardIdentifier="AlarmViewController" id="7an-Fz-r9u" customClass="AlarmViewController" customModule="Loop_Follow" customModuleProvider="target" sceneMemberID="viewController">
<viewController storyboardIdentifier="RemoteViewController" id="7an-Fz-r9u" customClass="RemoteViewController" customModule="Loop_Follow" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="53u-XU-GCk">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<viewLayoutGuide key="safeArea" id="SlM-Sc-PIr"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
</view>
<tabBarItem key="tabBarItem" title="Alarms" image="alarm" catalog="system" id="c7L-5b-Di9"/>
<tabBarItem key="tabBarItem" title="Remote" image="antenna.radiowaves.left.and.right" catalog="system" id="c7L-5b-Di9"/>
<navigationItem key="navigationItem" id="Lph-Pi-ZZL"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Rld-0Y-q4t" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="130" y="700"/>
</scene>
<!--Alarms-->
<scene sceneID="a12-B3-C4d">
<objects>
<viewController storyboardIdentifier="AlarmViewController" id="b34-C5-D6e" customClass="AlarmViewController" customModule="Loop_Follow" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="c56-D7-E8f">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<viewLayoutGuide key="safeArea" id="d78-E9-F0g"/>
<color key="backgroundColor" systemColor="systemBackgroundColor"/>
</view>
<navigationItem key="navigationItem" id="e90-F1-G2h"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="f12-G3-H4i" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="130" y="700"/>
</scene>
<!--Settings-->
<scene sceneID="ORV-wr-Fd3">
<objects>
Expand Down
192 changes: 94 additions & 98 deletions LoopFollow/Controllers/Alarms.swift
Original file line number Diff line number Diff line change
Expand Up @@ -338,8 +338,7 @@ extension MainViewController {
}

//check for not looping alert
if UserDefaultsRepository.url.value != "" {

if IsNightscoutEnabled() {
if UserDefaultsRepository.alertNotLoopingActive.value
&& !UserDefaultsRepository.alertNotLoopingIsSnoozed.value
&& (Double(dateTimeUtils.getNowTimeIntervalUTC() - UserDefaultsRepository.alertLastLoopTime.value) >= Double(UserDefaultsRepository.alertNotLooping.value * 60))
Expand Down Expand Up @@ -642,105 +641,102 @@ extension MainViewController {
}

func clearOldSnoozes(){
let date = Date()
let now = date.timeIntervalSince1970
var needsReload: Bool = false
guard let alarms = self.tabBarController!.viewControllers?[1] as? AlarmViewController else { return }

if date > UserDefaultsRepository.alertSnoozeAllTime.value ?? date {
UserDefaultsRepository.alertSnoozeAllTime.setNil(key: "alertSnoozeAllTime")
UserDefaultsRepository.alertSnoozeAllIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertSnoozeAllTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertSnoozeAllIsSnoozed", value: false)

}

let date = Date()
let now = date.timeIntervalSince1970
guard let alarms = ViewControllerManager.shared.alarmViewController else { return }

if date > UserDefaultsRepository.alertSnoozeAllTime.value ?? date {
UserDefaultsRepository.alertSnoozeAllTime.setNil(key: "alertSnoozeAllTime")
UserDefaultsRepository.alertSnoozeAllIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertSnoozeAllTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertSnoozeAllIsSnoozed", value: false)
}

if date > UserDefaultsRepository.alertMuteAllTime.value ?? date {
UserDefaultsRepository.alertMuteAllTime.setNil(key: "alertMuteAllTime")
UserDefaultsRepository.alertMuteAllIsMuted.value = false
alarms.reloadMuteTime(key: "alertMuteAllTime", setNil: true)
alarms.reloadIsMuted(key: "alertMuteAllIsMuted", value: false)

}

if date > UserDefaultsRepository.alertUrgentLowSnoozedTime.value ?? date {
UserDefaultsRepository.alertUrgentLowSnoozedTime.setNil(key: "alertUrgentLowSnoozedTime")
UserDefaultsRepository.alertUrgentLowIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertUrgentLowSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertUrgentLowIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertLowSnoozedTime.value ?? date {
UserDefaultsRepository.alertLowSnoozedTime.setNil(key: "alertLowSnoozedTime")
UserDefaultsRepository.alertLowIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertLowSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertLowIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertHighSnoozedTime.value ?? date {
UserDefaultsRepository.alertHighSnoozedTime.setNil(key: "alertHighSnoozedTime")
UserDefaultsRepository.alertHighIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertHighSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertHighIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertUrgentHighSnoozedTime.value ?? date {
UserDefaultsRepository.alertUrgentHighSnoozedTime.setNil(key: "alertUrgentHighSnoozedTime")
UserDefaultsRepository.alertUrgentHighIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertUrgentHighSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertUrgentHighIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertFastDropSnoozedTime.value ?? date {
UserDefaultsRepository.alertFastDropSnoozedTime.setNil(key: "alertFastDropSnoozedTime")
UserDefaultsRepository.alertFastDropIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertFastDropSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertFastDropIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertFastRiseSnoozedTime.value ?? date {
UserDefaultsRepository.alertFastRiseSnoozedTime.setNil(key: "alertFastRiseSnoozedTime")
UserDefaultsRepository.alertFastRiseIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertFastRiseSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertFastRiseIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertMissedReadingSnoozedTime.value ?? date {
UserDefaultsRepository.alertMissedReadingSnoozedTime.setNil(key: "alertMissedReadingSnoozedTime")
UserDefaultsRepository.alertMissedReadingIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertMissedReadingSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertMissedReadingIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertNotLoopingSnoozedTime.value ?? date {
UserDefaultsRepository.alertNotLoopingSnoozedTime.setNil(key: "alertNotLoopingSnoozedTime")
UserDefaultsRepository.alertNotLoopingIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: false)


}
if date > UserDefaultsRepository.alertMissedBolusSnoozedTime.value ?? date {
UserDefaultsRepository.alertMissedBolusSnoozedTime.setNil(key: "alertMissedBolusSnoozedTime")
UserDefaultsRepository.alertMissedBolusIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertSAGESnoozedTime.value ?? date {
UserDefaultsRepository.alertSAGESnoozedTime.setNil(key: "alertSAGESnoozedTime")
UserDefaultsRepository.alertSAGEIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertSAGESnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertSAGEIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertCAGESnoozedTime.value ?? date {
UserDefaultsRepository.alertCAGESnoozedTime.setNil(key: "alertCAGESnoozedTime")
UserDefaultsRepository.alertCAGEIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertCAGESnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertCAGEIsSnoozed", value: false)
if date > UserDefaultsRepository.alertUrgentLowSnoozedTime.value ?? date {
UserDefaultsRepository.alertUrgentLowSnoozedTime.setNil(key: "alertUrgentLowSnoozedTime")
UserDefaultsRepository.alertUrgentLowIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertUrgentLowSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertUrgentLowIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertLowSnoozedTime.value ?? date {
UserDefaultsRepository.alertLowSnoozedTime.setNil(key: "alertLowSnoozedTime")
UserDefaultsRepository.alertLowIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertLowSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertLowIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertHighSnoozedTime.value ?? date {
UserDefaultsRepository.alertHighSnoozedTime.setNil(key: "alertHighSnoozedTime")
UserDefaultsRepository.alertHighIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertHighSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertHighIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertUrgentHighSnoozedTime.value ?? date {
UserDefaultsRepository.alertUrgentHighSnoozedTime.setNil(key: "alertUrgentHighSnoozedTime")
UserDefaultsRepository.alertUrgentHighIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertUrgentHighSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertUrgentHighIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertFastDropSnoozedTime.value ?? date {
UserDefaultsRepository.alertFastDropSnoozedTime.setNil(key: "alertFastDropSnoozedTime")
UserDefaultsRepository.alertFastDropIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertFastDropSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertFastDropIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertFastRiseSnoozedTime.value ?? date {
UserDefaultsRepository.alertFastRiseSnoozedTime.setNil(key: "alertFastRiseSnoozedTime")
UserDefaultsRepository.alertFastRiseIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertFastRiseSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertFastRiseIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertMissedReadingSnoozedTime.value ?? date {
UserDefaultsRepository.alertMissedReadingSnoozedTime.setNil(key: "alertMissedReadingSnoozedTime")
UserDefaultsRepository.alertMissedReadingIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertMissedReadingSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertMissedReadingIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertNotLoopingSnoozedTime.value ?? date {
UserDefaultsRepository.alertNotLoopingSnoozedTime.setNil(key: "alertNotLoopingSnoozedTime")
UserDefaultsRepository.alertNotLoopingIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertNotLoopingSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertNotLoopingIsSnoozed", value: false)


}
if date > UserDefaultsRepository.alertMissedBolusSnoozedTime.value ?? date {
UserDefaultsRepository.alertMissedBolusSnoozedTime.setNil(key: "alertMissedBolusSnoozedTime")
UserDefaultsRepository.alertMissedBolusIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertMissedBolusSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertMissedBolusIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertSAGESnoozedTime.value ?? date {
UserDefaultsRepository.alertSAGESnoozedTime.setNil(key: "alertSAGESnoozedTime")
UserDefaultsRepository.alertSAGEIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertSAGESnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertSAGEIsSnoozed", value: false)

}
if date > UserDefaultsRepository.alertCAGESnoozedTime.value ?? date {
UserDefaultsRepository.alertCAGESnoozedTime.setNil(key: "alertCAGESnoozedTime")
UserDefaultsRepository.alertCAGEIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertCAGESnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertCAGEIsSnoozed", value: false)

}
}
if date > UserDefaultsRepository.alertOverrideStartSnoozedTime.value ?? date {
UserDefaultsRepository.alertOverrideStartSnoozedTime.setNil(key: "alertOverrideStartSnoozedTime")
UserDefaultsRepository.alertOverrideStartIsSnoozed.value = false
Expand All @@ -754,31 +750,31 @@ extension MainViewController {
alarms.reloadIsSnoozed(key: "alertOverrideEndIsSnoozed", value: false)

}

if date > UserDefaultsRepository.alertPumpSnoozedTime.value ?? date {
UserDefaultsRepository.alertPumpSnoozedTime.setNil(key: "alertPumpSnoozedTime")
UserDefaultsRepository.alertPumpIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertPumpSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertPumpIsSnoozed", value: false)

}

if date > UserDefaultsRepository.alertIOBSnoozedTime.value ?? date {
UserDefaultsRepository.alertIOBSnoozedTime.setNil(key: "alertIOBSnoozedTime")
UserDefaultsRepository.alertIOBIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertIOBSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertIOBIsSnoozed", value: false)

}

if date > UserDefaultsRepository.alertCOBSnoozedTime.value ?? date {
UserDefaultsRepository.alertCOBSnoozedTime.setNil(key: "alertCOBSnoozedTime")
UserDefaultsRepository.alertCOBIsSnoozed.value = false
alarms.reloadSnoozeTime(key: "alertCOBSnoozedTime", setNil: true)
alarms.reloadIsSnoozed(key: "alertCOBIsSnoozed", value: false)

}

if date > UserDefaultsRepository.alertBatterySnoozedTime.value ?? date {
UserDefaultsRepository.alertBatterySnoozedTime.setNil(key: "alertBatterySnoozedTime")
UserDefaultsRepository.alertBatteryIsSnoozed.value = false
Expand All @@ -793,7 +789,7 @@ extension MainViewController {
alarms.reloadIsSnoozed(key: "alertRecBolusIsSnoozed", value: false)
}
}

func checkQuietHours() {
if UserDefaultsRepository.quietHourStart.value == nil || UserDefaultsRepository.quietHourEnd.value == nil { return }

Expand Down
8 changes: 4 additions & 4 deletions LoopFollow/Controllers/Nightscout/BGData.swift
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ extension MainViewController {
print("Error fetching Dexcom data: \(error.localizedDescription)")

// If we get an error, immediately try to pull NS BG Data
if UserDefaultsRepository.url.value != "" {
if IsNightscoutEnabled() {
self.webLoadNSBGData()
}
return
Expand All @@ -35,14 +35,14 @@ extension MainViewController {
// If Dex data is old, load from NS instead
let latestDate = data[0].date
let now = dateTimeUtils.getNowTimeIntervalUTC()
if (latestDate + 330) < now && UserDefaultsRepository.url.value != "" {
if (latestDate + 330) < now && IsNightscoutEnabled() {
self.webLoadNSBGData()
print("Dex data is old, loading from NS instead")
return
}

// Dexcom only returns 24 hrs of data. If we need more, call NS.
if graphHours > 24 && UserDefaultsRepository.url.value != "" {
if graphHours > 24 && IsNightscoutEnabled() {
self.webLoadNSBGData(dexData: data)
} else {
self.ProcessDexBGData(data: data, sourceName: "Dexcom")
Expand All @@ -55,7 +55,7 @@ extension MainViewController {
if UserDefaultsRepository.debugLog.value { self.writeDebugLog(value: "Download: BG") }

// This kicks it out in the instance where dexcom fails but they aren't using NS &&
if UserDefaultsRepository.url.value == "" {
if !IsNightscoutEnabled() {
self.startBGTimer(time: 10)
return
}
Expand Down
Loading