extension Bolus { final class Provider: BaseProvider, BolusProvider { func getPumpSettings() async -> PumpSettings { await storage.retrieveAsync(OpenAPS.Settings.settings, as: PumpSettings.self) ?? PumpSettings(from: OpenAPS.defaults(for: OpenAPS.Settings.settings)) ?? PumpSettings(insulinActionCurve: 6, maxBolus: 10, maxBasal: 2) } func getBasalProfile() async -> [BasalProfileEntry] { await storage.retrieveAsync(OpenAPS.Settings.basalProfile, as: [BasalProfileEntry].self) ?? [BasalProfileEntry](from: OpenAPS.defaults(for: OpenAPS.Settings.basalProfile)) ?? [] } func getCarbRatios() async -> CarbRatios { await storage.retrieveAsync(OpenAPS.Settings.carbRatios, as: CarbRatios.self) ?? CarbRatios(from: OpenAPS.defaults(for: OpenAPS.Settings.carbRatios)) ?? CarbRatios(units: .grams, schedule: []) } func getBGTarget() async -> BGTargets { await storage.retrieveAsync(OpenAPS.Settings.bgTargets, as: BGTargets.self) ?? BGTargets(from: OpenAPS.defaults(for: OpenAPS.Settings.bgTargets)) ?? BGTargets(units: .mgdL, userPreferredUnits: .mgdL, targets: []) } func getISFValues() async -> InsulinSensitivities { await storage.retrieveAsync(OpenAPS.Settings.insulinSensitivities, as: InsulinSensitivities.self) ?? InsulinSensitivities(from: OpenAPS.defaults(for: OpenAPS.Settings.insulinSensitivities)) ?? InsulinSensitivities( units: .mgdL, userPreferredUnits: .mgdL, sensitivities: [] ) } } }