65 lines
2.1 KiB
Swift
65 lines
2.1 KiB
Swift
import ExpoModulesCore
|
|
import WatchConnectivity
|
|
|
|
public class WatchConnectivityModule: Module {
|
|
public func definition() -> ModuleDefinition {
|
|
Name("WatchConnectivity")
|
|
|
|
AsyncFunction("isSupported") { () -> Bool in
|
|
return WCSession.isSupported()
|
|
}
|
|
|
|
AsyncFunction("isPaired") { () -> Bool in
|
|
return WCSession.default.isPaired
|
|
}
|
|
|
|
AsyncFunction("isWatchAppInstalled") { () -> Bool in
|
|
return WCSession.default.isWatchAppInstalled
|
|
}
|
|
|
|
AsyncFunction("isReachable") { () -> Bool in
|
|
return WCSession.default.isReachable
|
|
}
|
|
|
|
AsyncFunction("sendWorkoutPlan") { (plan: [String: Any], promise: Promise) in
|
|
var message = plan
|
|
message["type"] = "workoutPlan"
|
|
|
|
if WCSession.default.isReachable {
|
|
WCSession.default.sendMessage(message, replyHandler: { reply in
|
|
promise.resolve(reply)
|
|
}, errorHandler: { error in
|
|
promise.reject(error)
|
|
})
|
|
} else {
|
|
WCSession.default.transferUserInfo(message)
|
|
promise.resolve(["status": "queued"])
|
|
}
|
|
}
|
|
|
|
AsyncFunction("sendWorkoutCompletion") { (data: [String: Any], promise: Promise) in
|
|
var message = data
|
|
message["type"] = "workoutCompleted"
|
|
|
|
if WCSession.default.isReachable {
|
|
WCSession.default.sendMessage(message, replyHandler: { reply in
|
|
promise.resolve(reply)
|
|
}, errorHandler: { error in
|
|
promise.reject(error)
|
|
})
|
|
} else {
|
|
WCSession.default.transferUserInfo(message)
|
|
promise.resolve(["status": "queued"])
|
|
}
|
|
}
|
|
|
|
AsyncFunction("getApplicationContext") { () -> [String: Any]? in
|
|
return WCSession.default.receivedApplicationContext as [String: Any]
|
|
}
|
|
|
|
AsyncFunction("updateApplicationContext") { (context: [String: Any]) in
|
|
try? WCSession.default.updateApplicationContext(context)
|
|
}
|
|
}
|
|
}
|