Procházet zdrojové kódy

Refactor infopanel.

Reduces time for compiling. And should fix error when building in GitHub.  Thanks you, Antoine Keranflec’h!
Clean up
Jon B.M před 3 roky
rodič
revize
b05094fd36
1 změnil soubory, kde provedl 63 přidání a 64 odebrání
  1. 63 64
      FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

+ 63 - 64
FreeAPS/Sources/Modules/Home/View/HomeRootView.swift

@@ -172,83 +172,82 @@ extension Home {
             }
         }
 
+        var tempBasalString: String? {
+            guard let tempRate = state.tempRate else {
+                return nil
+            }
+            let rateString = numberFormatter.string(from: tempRate as NSNumber) ?? "0"
+            var manualBasalString = ""
+
+            if state.apsManager.isManualTempBasal {
+                manualBasalString = NSLocalizedString(
+                    " - Manual Basal ⚠️",
+                    comment: "Manual Temp basal"
+                )
+            }
+            return rateString + NSLocalizedString(" U/hr", comment: "Unit per hour with space") + manualBasalString
+        }
+
+        var tempTargetString: String? {
+            guard let tempTarget = state.tempTarget else {
+                return nil
+            }
+            let target = tempTarget.targetBottom ?? 0
+            let unitString = targetFormatter.string(from: (tempTarget.targetBottom?.asMmolL ?? 0) as NSNumber) ?? ""
+            let rawString = (tirFormatter.string(from: (tempTarget.targetBottom ?? 0) as NSNumber) ?? "") + " " + state.units
+                .rawValue
+
+            var string = ""
+            if sliderTTpresets.first?.active ?? false {
+                let hbt = sliderTTpresets.first?.hbt ?? 0
+                string = ", " + (tirFormatter.string(from: state.infoPanelTTPercentage(hbt, target) as NSNumber) ?? "") + " %"
+            } else if enactedSliderTT.first?.enabled ?? false {
+                let hbt = enactedSliderTT.first?.hbt ?? 0
+                string = ", " + (tirFormatter.string(from: state.infoPanelTTPercentage(hbt, target) as NSNumber) ?? "") + " %"
+            }
+
+            let percentString = state
+                .units == .mmolL ? (unitString + " mmol/L" + string) : (rawString + (string == "0" ? "" : string))
+            return tempTarget.displayName + " " + percentString
+        }
+
+        var overrideString: String? {
+            guard fetchedPercent.first?.enabled ?? false else {
+                return nil
+            }
+            let percentString = "\((fetchedPercent.first?.percentage ?? 100).formatted(.number)) %"
+            let durationString = (tirFormatter.string(from: (fetchedPercent.first?.duration ?? 0) as NSNumber) ?? "") == "0" ?
+                "" : ", " + (tirFormatter.string(from: (fetchedPercent.first?.duration ?? 0) as NSNumber) ?? "") + " min"
+
+            return percentString + durationString
+        }
+
         var infoPanel: some View {
             HStack(alignment: .center) {
                 if state.pumpSuspended {
                     Text("Pump suspended")
                         .font(.system(size: 12, weight: .bold)).foregroundColor(.loopGray)
                         .padding(.leading, 8)
-                } else if let tempRate = state.tempRate {
-                    if state.apsManager.isManualTempBasal {
-                        Text(
-                            (numberFormatter.string(from: tempRate as NSNumber) ?? "0") +
-                                NSLocalizedString(" U/hr", comment: "Unit per hour with space") +
-                                NSLocalizedString(" -  Manual Basal ⚠️", comment: "Manual Temp basal")
-                        )
-                        .font(.system(size: 12, weight: .bold)).foregroundColor(.insulin)
+                } else if let tempBasalString = tempBasalString {
+                    Text(tempBasalString)
+                        .font(.system(size: 12, weight: .bold))
+                        .foregroundColor(.insulin)
                         .padding(.leading, 8)
-                    } else {
-                        Text(
-                            (numberFormatter.string(from: tempRate as NSNumber) ?? "0") +
-                                NSLocalizedString(" U/hr", comment: "Unit per hour with space")
-                        )
-                        .font(.system(size: 12, weight: .bold)).foregroundColor(.insulin)
-                        .padding(.leading, 8)
-                    }
                 }
 
-                if let tempTarget = state.tempTarget {
-                    let target_ = tempTarget.targetBottom ?? 0
-                    let unitString = targetFormatter.string(from: (tempTarget.targetBottom?.asMmolL ?? 0) as NSNumber)!
-
-                    if sliderTTpresets.first?.active ?? false {
-                        let hbt = sliderTTpresets.first?.hbt ?? 0
-                        let string = (tirFormatter.string(from: state.infoPanelTTPercentage(hbt, target_) as NSNumber) ?? "") +
-                            " %"
-                        let rawString = state.units.rawValue + (string == "0" ? "" : string + " %")
-
-                        Text(
-                            tempTarget.displayName + " " + (
-                                state.units == .mmolL ? (unitString + " mmol/L " + string) : rawString
-                            )
-                        )
-                        .font(.caption).foregroundColor(.secondary)
-                    } else if enactedSliderTT.first?.enabled ?? false {
-                        let hbt = enactedSliderTT.first?.hbt ?? 0
-                        let string = (tirFormatter.string(from: state.infoPanelTTPercentage(hbt, target_) as NSNumber) ?? "") +
-                            " %"
-                        let rawString = state.units.rawValue + (string == "0" ? "" : string + " %")
-
-                        Text(
-                            tempTarget.displayName + " " +
-                                (state.units == .mmolL ? (unitString + " mmol/L " + string) : rawString)
-                        )
-                        .font(.caption).foregroundColor(.secondary)
-                    } else {
-                        Text(
-                            tempTarget.displayName + " " + (
-                                state.units == .mmolL ? (unitString + " mmol/L ") : state.units.rawValue
-                            )
-                        ).font(.caption).foregroundColor(.secondary)
-                    }
+                if let tempTargetString = tempTargetString {
+                    Text(tempTargetString)
+                        .font(.caption)
+                        .foregroundColor(.secondary)
                 }
 
                 Spacer()
 
-                if fetchedPercent.first?.enabled ?? false {
-                    Text(
-                        "\((fetchedPercent.first?.percentage ?? 100).formatted(.number)) %" +
-                            (
-                                (tirFormatter.string(from: (fetchedPercent.first?.duration ?? 0) as NSNumber) ?? "") == "0" ?
-                                    "" :
-                                    ", " +
-                                    (tirFormatter.string(from: (fetchedPercent.first?.duration ?? 0) as NSNumber) ?? "") +
-                                    " min"
-                            )
-                    )
-                    .font(.system(size: 12))
-                    .foregroundColor(.orange)
-                    .padding(.trailing, 8)
+                if let overrideString = overrideString {
+                    Text(overrideString)
+                        .font(.system(size: 12))
+                        .foregroundColor(.orange)
+                        .padding(.trailing, 8)
                 }
 
                 if let progress = state.bolusProgress {