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
8 changes: 5 additions & 3 deletions OmniBLE/PumpManager/OmniBLEPumpManager.swift
Original file line number Diff line number Diff line change
Expand Up @@ -469,15 +469,17 @@ extension OmniBLEPumpManager {
return state.podState?.expiresAt
}

public var podVersion: PodVersion? {
public var podDetails: PodDetails? {
guard let podState = state.podState else {
return nil
}
return PodVersion(
return PodDetails(
lotNumber: podState.lotNo,
sequenceNumber: podState.lotSeq,
firmwareVersion: podState.firmwareVersion,
bleFirmwareVersion: podState.bleFirmwareVersion
bleFirmwareVersion: podState.bleFirmwareVersion,
totalDelivery: podState.lastInsulinMeasurements?.delivered,
lastStatus: podState.lastInsulinMeasurements?.validTime
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ class OmniBLESettingsViewModel: ObservableObject {
return pumpManager.status.timeZone
}

var podVersion: PodVersion? {
return pumpManager.podVersion
var podDetails: PodDetails? {
return pumpManager.podDetails
}

var viewTitle: String {
Expand Down Expand Up @@ -153,7 +153,6 @@ class OmniBLESettingsViewModel: ObservableObject {
}()

let basalRateFormatter: NumberFormatter = {
let unit = HKUnit.internationalUnit()
let numberFormatter = NumberFormatter()
numberFormatter.numberStyle = .decimal
numberFormatter.minimumFractionDigits = 1
Expand Down
6 changes: 3 additions & 3 deletions OmniBLE/PumpManagerUI/Views/OmniBLESettingsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -284,7 +284,7 @@ struct OmniBLESettingsView: View {

Section() {
HStack {
FrameworkLocalText("Pod Insertion", comment: "Label for pod insertion row")
FrameworkLocalText("Pod Activated", comment: "Label for pod insertion row")
Spacer()
Text(self.viewModel.activatedAtString)
.foregroundColor(Color.secondary)
Expand All @@ -297,8 +297,8 @@ struct OmniBLESettingsView: View {
.foregroundColor(Color.secondary)
}

if let podVersion = self.viewModel.podVersion {
NavigationLink(destination: PodDetailsView(podVersion: podVersion)) {
if let podDetails = self.viewModel.podDetails {
NavigationLink(destination: PodDetailsView(podDetails: podDetails)) {
FrameworkLocalText("Device Details", comment: "Text for device details disclosure row").foregroundColor(Color.primary)
}
} else {
Expand Down
42 changes: 36 additions & 6 deletions OmniBLE/PumpManagerUI/Views/PodDetailsView.swift
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,28 @@
import SwiftUI
import LoopKitUI

public struct PodVersion {
public struct PodDetails {
var lotNumber: UInt32
var sequenceNumber: UInt32
var firmwareVersion: String
var bleFirmwareVersion: String
var totalDelivery: Double?
var lastStatus: Date?
}

struct PodDetailsView: View {

var podVersion: PodVersion
var podDetails: PodDetails

let ageFormatter: DateComponentsFormatter = {
let formatter = DateComponentsFormatter()

formatter.allowedUnits = [.day, .hour, .minute, .second]
formatter.maximumUnitCount = 1
formatter.unitsStyle = .short

return formatter
}()

private func row(_ label: String, value: String) -> some View {
HStack {
Expand All @@ -28,18 +40,36 @@ struct PodDetailsView: View {
}
}

var totalDeliveryText: String {
if let delivery = podDetails.totalDelivery {
return String(format: LocalizedString("%g U", comment: "Format string for total delivery on pod details screen"), delivery)
} else {
return LocalizedString("NA", comment: "String shown on pod details for total delivery when not available.")
}
}

var lastStatusText: String {
if let lastStatus = podDetails.lastStatus, let ageString = ageFormatter.string(from: Date().timeIntervalSince(lastStatus)) {
return String(format: LocalizedString("%@ ago", comment: "Format string for last status date on pod details screen"), ageString)
} else {
return LocalizedString("NA", comment: "String shown on pod details for last status date when not available.")
}
}

var body: some View {
List {
row(LocalizedString("Lot Number", comment: "description label for lot number pod details row"), value: String(describing: podVersion.lotNumber))
row(LocalizedString("Sequence Number", comment: "description label for sequence number pod details row"), value: String(describing: podVersion.sequenceNumber))
row(LocalizedString("Firmware Version", comment: "description label for firmware version pod details row"), value: podVersion.firmwareVersion)
row(LocalizedString("Lot Number", comment: "description label for lot number pod details row"), value: String(describing: podDetails.lotNumber))
row(LocalizedString("Sequence Number", comment: "description label for sequence number pod details row"), value: String(describing: podDetails.sequenceNumber))
row(LocalizedString("Firmware Version", comment: "description label for firmware version pod details row"), value: podDetails.firmwareVersion)
row(LocalizedString("Total Delivery", comment: "description label for total delivery pod details row"), value: totalDeliveryText)
row(LocalizedString("Last Status", comment: "description label for last status date pod details row"), value: lastStatusText)
}
.navigationBarTitle(Text(LocalizedString("Device Details", comment: "title for device details page")), displayMode: .automatic)
}
}

struct PodDetailsView_Previews: PreviewProvider {
static var previews: some View {
PodDetailsView(podVersion: PodVersion(lotNumber: 0x1234, sequenceNumber: 0x1234, firmwareVersion: "1.1.1", bleFirmwareVersion: "2.2.2"))
PodDetailsView(podDetails: PodDetails(lotNumber: 0x1234, sequenceNumber: 0x1234, firmwareVersion: "1.1.1", bleFirmwareVersion: "2.2.2", totalDelivery: 10, lastStatus: Date()))
}
}