Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
13 changes: 0 additions & 13 deletions OmnipodKit/PumpManager/OmniPumpManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -389,16 +389,6 @@ public class OmniPumpManager: RileyLinkPumpManager {
backgroundTask.stopBackgroundTask()
}

typealias syncSilencePodStateFuncType = (_ silencePod: Bool, _ silencePodEnd: Date?) -> Void

/// Function to be called when silencePod variables are updated
private var syncSilencePodState: syncSilencePodStateFuncType?

/// Initializes the resetSilencePodState var for callbacks when silence pod mode has changed
func setSyncSilencePodState(_ callbackFunc: @escaping syncSilencePodStateFuncType) {
syncSilencePodState = callbackFunc
}


// MARK: - RileyLink specific vars and funcs

Expand Down Expand Up @@ -648,9 +638,6 @@ extension OmniPumpManager {
doSetSilencePod(session: session, silencePod: false, silencePodEnd: nil) { error in
if let error = error {
self.log.default("@@@ handleSilencePodEnd: disable silence mode failed: %{public}@", error.localizedDescription)
} else {
// Call back to sync the UI silence pod state variables
self.syncSilencePodState?(false, nil)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ enum OmniUIScreen {
case lowReservoirReminderSetup
case insulinTypeSelection
case selectPodType
case rileyLinkSetup // will be skipped for non-Eros pods
case rileyLinkSetup // Eros only step
case pairAndPrime
case insertCannula
case confirmAttachment
Expand Down Expand Up @@ -81,8 +81,6 @@ class OmniUICoordinator: UINavigationController, PumpManagerOnboarding, Completi

weak var completionDelegate: CompletionDelegate?

var podType = unknownOmnipodType

var pumpManager: OmniPumpManager

private var disposables = Set<AnyCancellable>()
Expand Down Expand Up @@ -172,7 +170,6 @@ class OmniUICoordinator: UINavigationController, PumpManagerOnboarding, Completi

case .selectPodType:
let didConfirm: (PodType) -> Void = { [weak self] (selectedPodType) in
self?.podType = selectedPodType
self?.pumpManager.podType = selectedPodType
self?.stepFinished()
}
Expand All @@ -181,7 +178,7 @@ class OmniUICoordinator: UINavigationController, PumpManagerOnboarding, Completi
}

let o5NotAvailable = O5CertificateStore.isEmpty
let podTypeSelectionView = PodTypeSelection(initialValue: self.podType, o5NotAvailable: o5NotAvailable, didConfirm: didConfirm, didCancel: didCancel)
let podTypeSelectionView = PodTypeSelection(initialValue: pumpManager.podType, o5NotAvailable: o5NotAvailable, didConfirm: didConfirm, didCancel: didCancel)
let hostedView = hostingController(rootView: podTypeSelectionView)
hostedView.navigationItem.title = LocalizedString("Pod Type", comment: "Title for Pod Type selection screen")
return hostedView
Expand Down Expand Up @@ -216,10 +213,6 @@ class OmniUICoordinator: UINavigationController, PumpManagerOnboarding, Completi
case .settings:
let viewModel = OmniSettingsViewModel(pumpManager: pumpManager)
viewModel.didFinish = { [weak self] in
if self?.pumpManager.podType == unknownOmnipodType {
print("Resetting OmniUICoordinator podType to unknownOmnipodType")
self?.podType = unknownOmnipodType
}
self?.stepFinished()
}
viewModel.navigateTo = { [weak self] (screen) in
Expand Down Expand Up @@ -262,7 +255,7 @@ class OmniUICoordinator: UINavigationController, PumpManagerOnboarding, Completi
}

let view = hostingController(rootView: PairPodView(viewModel: viewModel).onAppear(perform: {UIApplication.shared.isIdleTimerDisabled = true}), onDisappear: {UIApplication.shared.isIdleTimerDisabled = false})
view.navigationItem.title = String(format: LocalizedString("Pair %1$@ Pod", comment: "Title for pod pairing screen (1: pod type brief name)"), self.podType.briefName)
view.navigationItem.title = String(format: LocalizedString("Pair %1$@ Pod", comment: "Title for pod pairing screen (1: pod type brief name)"), pumpManager.podType.briefName)
view.navigationItem.backButtonDisplayMode = .generic
return view

Expand Down Expand Up @@ -390,7 +383,7 @@ class OmniUICoordinator: UINavigationController, PumpManagerOnboarding, Completi

private func stepFinished() {
if let nextStep = currentScreen.next() {
if nextStep == .rileyLinkSetup && !podType.usesRileyLink {
if nextStep == .rileyLinkSetup && !pumpManager.podType.usesRileyLink {
// Skip rileyLinkSetup to pairAndPrme for non-Eros
navigateTo(.pairAndPrime)
} else {
Expand Down Expand Up @@ -421,11 +414,11 @@ class OmniUICoordinator: UINavigationController, PumpManagerOnboarding, Completi
isOnboarded: false,
podState: nil,
timeZone: basalSchedule.timeZone,
basalSchedule: BasalSchedule(repeatingScheduleValues: basalSchedule.items, podType: self.podType),
basalSchedule: BasalSchedule(repeatingScheduleValues: basalSchedule.items, podType: unknownOmnipodType),
maxBasalRateUnitsPerHour: pumpManagerSettings.maxBasalRateUnitsPerHour,
maxBolusUnits: pumpManagerSettings.maxBolusUnits,
insulinType: nil,
podType: self.podType)
podType: unknownOmnipodType)

self.pumpManager = OmniPumpManager(state: pumpManagerState, rileyLinkDeviceProvider: deviceProvider)
} else {
Expand All @@ -449,26 +442,25 @@ class OmniUICoordinator: UINavigationController, PumpManagerOnboarding, Completi
}

private func determineInitialStep() -> OmniUIScreen {
self.podType = pumpManager.podType
if pumpManager.state.podState?.needsCommsRecovery == true {
return .pendingCommandRecovery
} else if pumpManager.podCommState == .activating {
if pumpManager.state.podState?.readyForCannulaInsertion == true && pumpManager.podAttachmentConfirmed {
return .insertCannula
} else {
assert(self.podType != unknownOmnipodType)
assert(pumpManager.podType != unknownOmnipodType)
return .pairAndPrime // need to finish the priming
}
} else if !pumpManager.isOnboarded {
if !pumpManager.initialConfigurationCompleted {
return .firstRunScreen
}
if self.podType == unknownOmnipodType {
if pumpManager.podType == unknownOmnipodType {
return .selectPodType // need to first select a pod type
}
return .pairAndPrime // pair and prime a new pod
} else {
if self.podType == unknownOmnipodType {
if pumpManager.podType == unknownOmnipodType {
return .selectPodType // need to first select a pod type
}
return .settings
Expand Down
18 changes: 5 additions & 13 deletions OmnipodKit/PumpManagerUI/ViewModels/OmniSettingsViewModel.swift
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ class OmniSettingsViewModel: ObservableObject {

// Expiration reminder date for current pod
@Published var expirationReminderDate: Date?

var allowedScheduledReminderDates: [Date]? {
return pumpManager.allowedExpirationReminderDates
}
Expand Down Expand Up @@ -248,7 +248,7 @@ class OmniSettingsViewModel: ObservableObject {

init(pumpManager: OmniPumpManager) {
self.pumpManager = pumpManager

lifeState = pumpManager.lifeState
activatedAt = pumpManager.podActivatedAt
expiresAt = pumpManager.expiresAt
Expand All @@ -263,8 +263,8 @@ class OmniSettingsViewModel: ObservableObject {
podCommState = pumpManager.podCommState
beepPreference = pumpManager.beepPreference
silencePodPreference = pumpManager.silencePod ? .enabled : .disabled
podKeepAlivePreference = Storage.shared.podKeepAlive.value
silencePodEnd = pumpManager.silencePodEnd
podKeepAlivePreference = Storage.shared.podKeepAlive.value
hasConnection = pumpManager.hasConnection
insulinType = pumpManager.insulinType
podDetails = pumpManager.podDetails
Expand All @@ -273,8 +273,6 @@ class OmniSettingsViewModel: ObservableObject {
pumpManager.addPodStateObserver(self, queue: DispatchQueue.main)
pumpManager.addStatusObserver(self, queue: DispatchQueue.main)

pumpManager.setSyncSilencePodState(syncSilencePodState)

// Trigger refresh
pumpManager.getPodStatus() { _ in }

Expand Down Expand Up @@ -398,14 +396,6 @@ class OmniSettingsViewModel: ObservableObject {
}
}

/// Called by the Omni pump manager after the silencePodEnd reached and silence pod mode disabled.
func syncSilencePodState(_ silencePod: Bool, _ silencePodEnd: Date?) {
DispatchQueue.main.async {
self.silencePodPreference = silencePod ? .enabled : .disabled
self.silencePodEnd = silencePodEnd
}
}

func setSilencePod(_ silencePodPreference: SilencePodPreference, silencePodEnd: Date?,
_ completion: @escaping (_ error: LocalizedError?) -> Void)
{
Expand Down Expand Up @@ -576,6 +566,8 @@ extension OmniSettingsViewModel: PodStateObserver {
expirationReminderDate = self.pumpManager.scheduledExpirationReminder
podCommState = self.pumpManager.podCommState
beepPreference = self.pumpManager.beepPreference
silencePodPreference = self.pumpManager.silencePod ? .enabled : .disabled
silencePodEnd = self.pumpManager.silencePodEnd
insulinType = self.pumpManager.insulinType
podDetails = self.pumpManager.podDetails
previousPodDetails = self.pumpManager.previousPodDetails
Expand Down