From 9ef862aa5d97ed24ffe2ca2c519d6fff7e3ee19c Mon Sep 17 00:00:00 2001 From: Serhiy Mytrovtsiy Date: Tue, 15 Dec 2020 17:23:34 +0100 Subject: [PATCH] fix: system temperature units --- StatsKit/helpers.swift | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/StatsKit/helpers.swift b/StatsKit/helpers.swift index 16bf590f..ecd5c62a 100644 --- a/StatsKit/helpers.swift +++ b/StatsKit/helpers.swift @@ -656,6 +656,14 @@ public func LocalizedString(_ key: String, _ params: String..., comment: String return string } +extension UnitTemperature { + static var current: UnitTemperature { + let measureFormatter = MeasurementFormatter() + let measurement = Measurement(value: 0, unit: UnitTemperature.celsius) + return measureFormatter.string(from: measurement) == "0°C" ? .celsius : .fahrenheit + } +} + public func Temperature(_ value: Double) -> String { let stringUnit: String = Store.shared.string(key: "temperature_units", defaultValue: "system") let formatter = MeasurementFormatter() @@ -664,9 +672,13 @@ public func Temperature(_ value: Double) -> String { formatter.unitOptions = .providedUnit var measurement = Measurement(value: value, unit: UnitTemperature.celsius) - if stringUnit != "system" { - if let temperatureUnit = TemperatureUnits.first(where: { $0.key == stringUnit }), let unit = temperatureUnit.additional as? UnitTemperature { - measurement.convert(to: unit) + if stringUnit == "system" { + measurement.convert(to: UnitTemperature.current) + } else { + if let temperatureUnit = TemperatureUnits.first(where: { $0.key == stringUnit }) { + if let unit = temperatureUnit.additional as? UnitTemperature { + measurement.convert(to: unit) + } } }