Files
haptika/packages/react-native-haptika-ppg/ios/Watch/HaptikaWatchConnectivityModule.swift
2026-07-31 16:20:10 +02:00

66 lines
2.0 KiB
Swift

import Foundation
import React
/// Thin React Native facade over the central WCSession owner. The PPG and
/// Core Haptics objects remain Nitro modules; connectivity is intentionally a
/// process-wide service and therefore must not be instantiated per HybridObject.
@objc(HaptikaWatchConnectivity)
final class HaptikaWatchConnectivityModule: NSObject {
@objc static func requiresMainQueueSetup() -> Bool { false }
@objc func start() {
HaptikaWatchConnectivityService.shared.activate()
}
@objc func getConnectionState(
_ resolve: RCTPromiseResolveBlock,
rejecter reject: RCTPromiseRejectBlock
) {
let state = HaptikaWatchConnectivityService.shared.state()
resolve([
"supported": state.supported,
"paired": state.paired,
"watchAppInstalled": state.installed,
"reachable": state.reachable,
"activationState": state.activationState,
"latestEventId": state.latestEventId ?? NSNull(),
"latestEventAt": state.latestEventAt ?? NSNull()
])
}
@objc func drainEvents(
_ resolve: RCTPromiseResolveBlock,
rejecter reject: RCTPromiseRejectBlock
) {
resolve(HaptikaWatchConnectivityService.shared.drainEvents())
}
@objc func acknowledgeEvents(_ eventIds: [String]) {
HaptikaWatchConnectivityService.shared.acknowledge(eventIds: eventIds)
}
@objc func sendPreferences(
_ json: String,
resolver resolve: RCTPromiseResolveBlock,
rejecter reject: RCTPromiseRejectBlock
) {
resolve(HaptikaWatchConnectivityService.shared.sendPreferences(json: json))
}
@objc func sendCommand(
_ json: String,
resolver resolve: RCTPromiseResolveBlock,
rejecter reject: RCTPromiseRejectBlock
) {
resolve(HaptikaWatchConnectivityService.shared.sendCommand(json: json))
}
@objc func transferEvent(
_ json: String,
resolver resolve: RCTPromiseResolveBlock,
rejecter reject: RCTPromiseRejectBlock
) {
resolve(HaptikaWatchConnectivityService.shared.transferEvent(json: json))
}
}