Skip to content

Commit d97ee5e

Browse files
authored
Merge pull request #434 from nightscout/release/0.2.2
Release v0.2.2
2 parents 2e86678 + c8e66a6 commit d97ee5e

17 files changed

+94
-17
lines changed

CGMBLEKit

CODE_OF_CONDUCT.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ representative at an online or offline event.
5959
## Enforcement
6060

6161
Instances of abusive, harassing, or otherwise unacceptable behavior may be
62-
reported to the Discord server admins. Please join our [Discord server](https://discord.gg/dbe5Twav8D) to contact
62+
reported to the Discord server admins. Please join our [Discord server](http://discord.diy-trio.org) to contact
6363
them directly for any enforcement issues. All complaints will be reviewed and
6464
investigated promptly and fairly.
6565

Config.xcconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
APP_DISPLAY_NAME = Trio
2-
APP_VERSION = 0.2.1
2+
APP_VERSION = 0.2.2
33
APP_BUILD_NUMBER = 1
44
COPYRIGHT_NOTICE =
55
DEVELOPER_TEAM = ##TEAM_ID##

FreeAPS/Sources/APS/FetchGlucoseManager.swift

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Combine
22
import Foundation
3+
import HealthKit
34
import LoopKit
45
import LoopKitUI
56
import SwiftDate
@@ -98,6 +99,14 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
9899
settingsManager.settings.uploadGlucose = cgmM.shouldSyncToRemoteService
99100
}
100101

102+
private func updateManagerUnits(_ manager: CGMManagerUI?) {
103+
let units = settingsManager.settings.units
104+
let managerName = cgmManager.map { "\(type(of: $0))" } ?? "nil"
105+
let loopkitUnits: HKUnit = units == .mgdL ? .milligramsPerDeciliter : .millimolesPerLiter
106+
print("manager: \(managerName) is changing units to: \(loopkitUnits.description) ")
107+
manager?.unitDidChange(to: loopkitUnits)
108+
}
109+
101110
func updateGlucoseSource(cgmGlucoseSourceType: CGMType, cgmGlucosePluginId: String, newManager: CGMManagerUI?) {
102111
// if changed, remove all calibrations
103112
if self.cgmGlucoseSourceType != cgmGlucoseSourceType || self.cgmGlucosePluginId != cgmGlucosePluginId {
@@ -120,6 +129,8 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
120129
removeCalibrations()
121130
} else if self.cgmGlucoseSourceType == .plugin, cgmManager == nil, let rawCGMManager = rawCGMManager {
122131
cgmManager = cgmManagerFromRawValue(rawCGMManager)
132+
updateManagerUnits(cgmManager)
133+
123134
} else {
124135
saveConfigManager()
125136
}
@@ -151,7 +162,6 @@ final class BaseFetchGlucoseManager: FetchGlucoseManager, Injectable {
151162
else {
152163
return nil
153164
}
154-
155165
return Manager.init(rawState: rawState)
156166
}
157167

FreeAPS/Sources/APS/OpenAPS/JavaScriptWorker.swift

Lines changed: 57 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,32 @@ import JavaScriptCore
33

44
private let contextLock = NSRecursiveLock()
55

6+
extension String {
7+
var lowercasingFirst: String { prefix(1).lowercased() + dropFirst() }
8+
var uppercasingFirst: String { prefix(1).uppercased() + dropFirst() }
9+
var camelCased: String {
10+
guard !isEmpty else { return "" }
11+
let parts = components(separatedBy: .alphanumerics.inverted)
12+
let first = parts.first!.lowercasingFirst
13+
let rest = parts.dropFirst().map(\.uppercasingFirst)
14+
return ([first] + rest).joined()
15+
}
16+
17+
var pascalCased: String {
18+
guard !isEmpty else { return "" }
19+
let parts = components(separatedBy: .alphanumerics.inverted)
20+
let first = parts.first!.uppercasingFirst
21+
let rest = parts.dropFirst().map(\.uppercasingFirst)
22+
return ([first] + rest).joined()
23+
}
24+
}
25+
626
final class JavaScriptWorker {
727
private let processQueue = DispatchQueue(label: "DispatchQueue.JavaScriptWorker")
828
private let virtualMachine: JSVirtualMachine
929
@SyncAccess(lock: contextLock) private var commonContext: JSContext? = nil
30+
private var consoleLogs: [String] = []
31+
private var logContext: String = ""
1032

1133
init() {
1234
virtualMachine = processQueue.sync { JSVirtualMachine()! }
@@ -20,18 +42,49 @@ final class JavaScriptWorker {
2042
}
2143
}
2244
let consoleLog: @convention(block) (String) -> Void = { message in
23-
debug(.openAPS, "JavaScript log: \(message)")
45+
let trimmedMessage = message.trimmingCharacters(in: .whitespacesAndNewlines)
46+
if !trimmedMessage.isEmpty {
47+
self.consoleLogs.append("\(trimmedMessage)")
48+
}
2449
}
25-
2650
context.setObject(
2751
consoleLog,
2852
forKeyedSubscript: "_consoleLog" as NSString
2953
)
3054
return context
3155
}
3256

57+
// New method to flush aggregated logs
58+
private func outputLogs() {
59+
var outputLogs = consoleLogs.joined(separator: "\n").trimmingCharacters(in: .whitespacesAndNewlines)
60+
consoleLogs.removeAll()
61+
62+
if outputLogs.isEmpty { return }
63+
64+
if logContext == "autosens.js" {
65+
outputLogs = outputLogs.split(separator: "\n").map { logLine in
66+
logLine.replacingOccurrences(
67+
of: "^[-+=x!]|u\\(|\\)|\\d{1,2}h$",
68+
with: "",
69+
options: .regularExpression
70+
)
71+
}.joined(separator: "\n")
72+
}
73+
74+
if !outputLogs.isEmpty {
75+
outputLogs.split(separator: "\n").forEach { logLine in
76+
if !"\(logLine)".trimmingCharacters(in: .whitespacesAndNewlines).isEmpty {
77+
debug(.openAPS, "\(logContext): \(logLine)")
78+
}
79+
}
80+
}
81+
}
82+
3383
@discardableResult func evaluate(script: Script) -> JSValue! {
34-
evaluate(string: script.body)
84+
logContext = URL(fileURLWithPath: script.name).lastPathComponent
85+
let result = evaluate(string: script.body)
86+
outputLogs()
87+
return result
3588
}
3689

3790
private func evaluate(string: String) -> JSValue! {
@@ -52,6 +105,7 @@ final class JavaScriptWorker {
52105
commonContext = createContext()
53106
defer {
54107
commonContext = nil
108+
outputLogs()
55109
}
56110
return execute(self)
57111
}

FreeAPS/Sources/APS/OpenAPS/OpenAPS.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -635,11 +635,11 @@ final class OpenAPS {
635635

636636
private func middlewareScript(name: String) -> Script? {
637637
if let body = storage.retrieveRaw(name) {
638-
return Script(name: "Middleware", body: body)
638+
return Script(name: name, body: body)
639639
}
640640

641641
if let url = Foundation.Bundle.main.url(forResource: "javascript/\(name)", withExtension: "") {
642-
return Script(name: "Middleware", body: try! String(contentsOf: url))
642+
return Script(name: name, body: try! String(contentsOf: url))
643643
}
644644

645645
return nil

FreeAPS/Sources/Modules/DataTable/View/DataTableRootView.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ extension DataTable {
4545
formatter.minimumFractionDigits = 0
4646
formatter.maximumFractionDigits = 1
4747
}
48-
formatter.roundingMode = .down
48+
formatter.roundingMode = .halfUp
4949
return formatter
5050
}
5151

FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorDataFlow.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ protocol PreferencesEditorProvider: Provider {
109109
var preferences: Preferences { get }
110110
func savePreferences(_ preferences: Preferences)
111111
func migrateUnits()
112+
func updateManagerUnits()
112113
}
113114

114115
protocol PreferencesSettable: AnyObject {

FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorProvider.swift

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import Foundation
2+
import HealthKit
23

34
extension PreferencesEditor {
45
final class Provider: BaseProvider, PreferencesEditorProvider {
56
@Injected() private var settingsManager: SettingsManager!
7+
@Injected() var fetchGlucoseManager: FetchGlucoseManager!
68
private let processQueue = DispatchQueue(label: "PreferencesEditorProvider.processQueue")
79

810
var preferences: Preferences {
@@ -17,6 +19,15 @@ extension PreferencesEditor {
1719
}
1820
}
1921

22+
func updateManagerUnits() {
23+
var manager = fetchGlucoseManager.cgmManager
24+
let managerName = manager.map { "\(type(of: $0))" } ?? "nil"
25+
let units = settingsManager.settings.units
26+
let loopkitUnits: HKUnit = units == .mgdL ? .milligramsPerDeciliter : .millimolesPerLiter
27+
print("manager: \(managerName) is changing units to: \(loopkitUnits.description) ")
28+
manager?.unitDidChange(to: loopkitUnits)
29+
}
30+
2031
func migrateUnits() {
2132
migrateTargets()
2233
migrateISF()

FreeAPS/Sources/Modules/PreferencesEditor/PreferencesEditorStateModel.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ extension PreferencesEditor {
1616
subscribeSetting(\.units, on: $unitsIndex.map { $0 == 0 ? GlucoseUnits.mgdL : .mmolL }) {
1717
unitsIndex = $0 == .mgdL ? 0 : 1
1818
} didSet: { [weak self] _ in
19+
self?.provider.updateManagerUnits()
1920
self?.provider.migrateUnits()
2021
}
2122

0 commit comments

Comments
 (0)