ソースを参照

fix: improve time active format

bastiaanv 7 ヶ月 前
コミット
862360b76c
1 ファイル変更20 行追加4 行削除
  1. 20 4
      Trio/Sources/Modules/Home/View/Header/PumpView.swift

+ 20 - 4
Trio/Sources/Modules/Home/View/Header/PumpView.swift

@@ -115,10 +115,9 @@ struct PumpView: View {
                 .foregroundStyle(timerColor, Color.yellow)
                 .symbolRenderingMode(.palette)
 
-            let remainingTimeString = remainingTimeString(
-                time: isExpiration ? date.timeIntervalSince(timerDate) : timerDate
-                    .timeIntervalSince(date)
-            )
+            let remainingTimeString = isExpiration ?
+                remainingTimeString(time: date.timeIntervalSince(timerDate)) :
+                activeTimeString(time: timerDate.timeIntervalSince(date))
 
             Text(remainingTimeString)
                 .font(date.timeIntervalSince(timerDate) > 0 ? .callout : .subheadline)
@@ -161,6 +160,23 @@ struct PumpView: View {
         return "\(minutes)" + String(localized: "m", comment: "abbreviation for minutes")
     }
 
+    private func activeTimeString(time: TimeInterval) -> String {
+        var time = time
+        let days = Int(time / 1.days.timeInterval)
+        time -= days.days.timeInterval
+        let hours = Int(time / 1.hours.timeInterval)
+        time -= hours.hours.timeInterval
+        let minutes = Int(time / 1.minutes.timeInterval)
+
+        if days >= 1 {
+            return "\(days)" + String(localized: "d", comment: "abbreviation for days") + " \(hours)" +
+                String(localized: "h", comment: "abbreviation for hours")
+        }
+
+        return "\(hours)" + String(localized: "h", comment: "abbreviation for hours") + "\(minutes)" +
+            String(localized: "m", comment: "abbreviation for minutes")
+    }
+
     private var batteryColor: Color {
         guard let battery = battery.first else {
             return .gray