Skip to content

Commit 51f28ce

Browse files
authored
Make sure watch extension code runs on main queue. (#675)
1 parent 48e1d2d commit 51f28ce

File tree

4 files changed

+27
-16
lines changed

4 files changed

+27
-16
lines changed

WatchApp Extension/Controllers/AddCarbsInterfaceController.swift

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,10 +163,14 @@ final class AddCarbsInterfaceController: WKInterfaceController, IdentifiableClas
163163
do {
164164
try WCSession.default.sendCarbEntryMessage(entry,
165165
replyHandler: { (suggestion) in
166-
WKExtension.shared().rootInterfaceController?.presentController(withName: BolusInterfaceController.className, context: suggestion)
166+
DispatchQueue.main.async {
167+
WKExtension.shared().rootInterfaceController?.presentController(withName: BolusInterfaceController.className, context: suggestion)
168+
}
167169
},
168170
errorHandler: { (error) in
169-
ExtensionDelegate.shared().present(error)
171+
DispatchQueue.main.async {
172+
ExtensionDelegate.shared().present(error)
173+
}
170174
}
171175
)
172176
} catch {

WatchApp Extension/Controllers/BolusInterfaceController.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,9 @@ final class BolusInterfaceController: WKInterfaceController, IdentifiableClass {
137137

138138
do {
139139
try WCSession.default.sendBolusMessage(bolus) { (error) in
140-
ExtensionDelegate.shared().present(error)
140+
DispatchQueue.main.async {
141+
ExtensionDelegate.shared().present(error)
142+
}
141143
}
142144
} catch {
143145
presentAlert(

WatchApp Extension/Controllers/StatusInterfaceController.swift

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -244,29 +244,34 @@ final class StatusInterfaceController: WKInterfaceController, ContextUpdatable {
244244
do {
245245
try WCSession.default.sendGlucoseRangeScheduleOverrideMessage(userInfo,
246246
replyHandler: { _ in
247-
self.pendingMessageResponses -= 1
248-
if self.pendingMessageResponses == 0 {
249-
self.updateForOverrideContext(userInfo?.context)
247+
DispatchQueue.main.async {
248+
self.pendingMessageResponses -= 1
249+
if self.pendingMessageResponses == 0 {
250+
self.updateForOverrideContext(userInfo?.context)
251+
}
252+
self.lastOverrideContext = userInfo?.context
250253
}
251-
self.lastOverrideContext = userInfo?.context
252254
},
253255
errorHandler: { error in
254-
self.pendingMessageResponses -= 1
255-
if self.pendingMessageResponses == 0 {
256-
self.updateForOverrideContext(self.lastOverrideContext)
256+
DispatchQueue.main.async {
257+
self.pendingMessageResponses -= 1
258+
if self.pendingMessageResponses == 0 {
259+
self.updateForOverrideContext(self.lastOverrideContext)
260+
}
261+
ExtensionDelegate.shared().present(error)
257262
}
258-
ExtensionDelegate.shared().present(error)
259263
}
260264
)
261265
} catch {
262266
pendingMessageResponses -= 1
263267
if pendingMessageResponses == 0 {
264268
updateForOverrideContext(lastOverrideContext)
265269
}
266-
presentAlert(withTitle: NSLocalizedString("Send Failed", comment: "The title of the alert controller displayed after a glucose range override send attempt fails"),
267-
message: NSLocalizedString("Make sure your iPhone is nearby and try again", comment: "The recovery message displayed after a glucose range override send attempt fails"),
268-
preferredStyle: .alert,
269-
actions: [WKAlertAction.dismissAction()]
270+
presentAlert(
271+
withTitle: NSLocalizedString("Send Failed", comment: "The title of the alert controller displayed after a glucose range override send attempt fails"),
272+
message: NSLocalizedString("Make sure your iPhone is nearby and try again", comment: "The recovery message displayed after a glucose range override send attempt fails"),
273+
preferredStyle: .alert,
274+
actions: [WKAlertAction.dismissAction()]
270275
)
271276
}
272277
}

WatchApp Extension/ExtensionDelegate.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ final class ExtensionDelegate: NSObject, WKExtensionDelegate {
164164

165165
extension ExtensionDelegate: WCSessionDelegate {
166166
func session(_ session: WCSession, activationDidCompleteWith activationState: WCSessionActivationState, error: Error?) {
167-
if activationState == .activated && lastContext == nil {
167+
if activationState == .activated {
168168
updateContext(session.receivedApplicationContext)
169169
}
170170
}

0 commit comments

Comments
 (0)