Просмотр исходного кода

Merge remote-tracking branch 'Jon-b-m/Crowdin' into experimental

Jon B.M 4 лет назад
Родитель
Сommit
34e904b253

+ 7 - 0
FreeAPS/Sources/APS/DeviceDataManager.swift

@@ -41,6 +41,7 @@ final class BaseDeviceDataManager: DeviceDataManager, Injectable {
     @Injected() private var storage: FileStorage!
     @Injected() private var broadcaster: Broadcaster!
     @Injected() private var glucoseStorage: GlucoseStorage!
+    @Injected() private var settingsManager: SettingsManager!
 
     @Persisted(key: "BaseDeviceDataManager.lastEventDate") var lastEventDate: Date? = nil
     @SyncAccess(lock: accessLock) @Persisted(key: "BaseDeviceDataManager.lastHeartBeatTime") var lastHeartBeatTime: Date =
@@ -321,6 +322,12 @@ extension BaseDeviceDataManager: PumpManagerDelegate {
     ) {
         dispatchPrecondition(condition: .onQueue(processQueue))
         debug(.deviceManager, "New pump events:\n\(events.map(\.title).joined(separator: "\n"))")
+
+        // filter buggy TBRs > maxBasal from MDT
+        let events = events.filter {
+            guard $0.type == .tempBasal else { return true }
+            return $0.dose?.unitsPerHour ?? 0 <= Double(settingsManager.pumpSettings.maxBasal)
+        }
         pumpHistoryStorage.storePumpEvents(events)
         lastEventDate = events.last?.date
         completion(nil)

+ 5 - 9
FreeAPS/Sources/APS/Storage/GlucoseStorage.swift

@@ -105,15 +105,11 @@ final class BaseGlucoseStorage: GlucoseStorage, Injectable {
     }
 
     func isGlucoseNotFlat() -> Bool {
-        let last3 = recent().suffix(3)
-        guard last3.count == 3 else { return true }
-
-        return Array(
-            last3
-                .compactMap { $0.filtered ?? 0 }
-                .filter { $0 != 0 }
-                .uniqued()
-        ).count != 1
+        let count = 3 // check last 3 readings
+        let lastReadings = Array(recent().suffix(count))
+        let filtered = lastReadings.compactMap(\.filtered).filter { $0 != 0 }
+        guard lastReadings.count == count, filtered.count == count else { return true }
+        return Array(filtered.uniqued()).count != 1
     }
 
     func nightscoutGlucoseNotUploaded() -> [BloodGlucose] {

+ 1 - 1
FreeAPS/Sources/APS/Storage/PumpHistoryStorage.swift

@@ -48,7 +48,7 @@ final class BasePumpHistoryStorage: PumpHistoryStorage, Injectable {
                 case .tempBasal:
                     guard let dose = event.dose else { return [] }
 
-                    let rate = Decimal(string: dose.unitsPerHour.description)
+                    let rate = Decimal(dose.unitsPerHour)
                     let minutes = (dose.endDate - dose.startDate).timeInterval / 60
                     let delivered = dose.deliveredUnits
                     let date = event.date

Разница между файлами не показана из-за своего большого размера
+ 6 - 6
FreeAPS/Sources/Localizations/Main/nl.lproj/Localizable.strings


+ 0 - 1
FreeAPS/Sources/Localizations/Main/ru.lproj/Localizable.strings

@@ -893,7 +893,6 @@ Enact a temp Basal or a temp target */
 /* */
 "Suspend" = "Остановка";
 
-
 /* Headers for settings ----------------------- */
 "OpenAPS main settings" = "Основные настройки OpenAPS";
 

+ 1 - 1
FreeAPS/Sources/Localizations/Main/sv.lproj/Localizable.strings

@@ -879,7 +879,7 @@ Enact a temp Basal or a temp target */
 "Bolus failed or inaccurate. Check pump history before repeating." = "Misslyckad eller felaktig bolus. Kontrollera pumpens historik innan du försöker igen.";
 
 /* */
-"Carbs" = "Kolh.";
+"Carbs" = "Kolhydrater";
 
 /* */
 "Temp Basal" = "Temporär basal";

+ 1 - 0
FreeAPS/Sources/Localizations/Main/zh-Hans.lproj/Localizable.strings

@@ -893,6 +893,7 @@ Enact a temp Basal or a temp target */
 /* */
 "Suspend" = "Suspend";
 
+
 /* Headers for settings ----------------------- */
 "OpenAPS main settings" = "OpenAPS 主要设置";
 

+ 24 - 0
FreeAPS/Sources/Modules/PreferencesEditor/View/PreferencesEditorRootView.swift

@@ -88,6 +88,30 @@ extension PreferencesEditor {
             .onAppear(perform: configureView)
             .navigationTitle("Preferences")
             .navigationBarTitleDisplayMode(.automatic)
+            .navigationBarItems(
+                trailing:
+                Button {
+                    let lang = Locale.current.languageCode ?? "en"
+                    if lang == "en" {
+                        UIApplication.shared.open(
+                            URL(
+                                string: "https://openaps.readthedocs.io/en/latest/docs/While%20You%20Wait%20For%20Gear/preferences-and-safety-settings.html"
+                            )!,
+                            options: [:],
+                            completionHandler: nil
+                        )
+                    } else {
+                        UIApplication.shared.open(
+                            URL(
+                                string: "https://openaps-readthedocs-io.translate.goog/en/latest/docs/While%20You%20Wait%20For%20Gear/preferences-and-safety-settings.html?_x_tr_sl=en&_x_tr_tl=\(lang)&_x_tr_hl=\(lang)"
+                            )!,
+                            options: [:],
+                            completionHandler: nil
+                        )
+                    }
+                }
+                label: { Image(systemName: "questionmark.circle") }
+            )
             .alert(item: $infoButtonPressed) { infoButton in
                 Alert(
                     title: Text("\(infoButton.oref0Variable)"),