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)) } }