react-native-rook-sdk 2.1.2 → 4.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +35 -3
- package/RNRookSdk.podspec +22 -0
- package/android/build.gradle +20 -41
- package/android/gradle.properties +5 -5
- package/android/src/main/AndroidManifest.xml +1 -2
- package/android/src/main/java/com/rooksdk/RookSdkModule.kt +11 -222
- package/android/src/main/java/com/rooksdk/RookSdkPackage.kt +24 -33
- package/ios/DateHelper.swift +55 -0
- package/ios/Encodable.swift +25 -0
- package/ios/EncodableDataSource.swift +5 -6
- package/ios/EncodableDataSourceAuthorizer.swift +3 -4
- package/ios/HearRateMapper.swift +42 -0
- package/ios/RookBackground.swift +35 -0
- package/ios/RookConfiguration.swift +116 -0
- package/ios/RookData.swift +170 -0
- package/ios/RookEntry.swift +61 -0
- package/ios/RookPermissions.swift +78 -0
- package/ios/RookSdk-Bridging-Header.h +12 -0
- package/ios/RookSdk.h +14 -2
- package/ios/RookSdk.mm +549 -81
- package/ios/RookSources.swift +74 -116
- package/ios/RookSync.swift +126 -34
- package/ios/boost-boost_privacy-Bridging-Header.h +4 -0
- package/lib/module/NativeRookSdk.js +96 -0
- package/lib/module/NativeRookSdk.js.map +1 -0
- package/lib/module/context/RookSyncGateContext.js +2 -0
- package/lib/module/context/RookSyncGateContext.js.map +1 -1
- package/lib/module/context/RookSyncGateProvider.js +16 -15
- package/lib/module/context/RookSyncGateProvider.js.map +1 -1
- package/lib/module/context/RookSyncGateReducer.js +2 -0
- package/lib/module/context/RookSyncGateReducer.js.map +1 -1
- package/lib/module/context/RookSyncGateTypes.js +2 -0
- package/lib/module/hooks/useRookAPISources.js +66 -0
- package/lib/module/hooks/useRookAPISources.js.map +1 -0
- package/lib/module/hooks/useRookAndroidBackgroundSteps.js +12 -25
- package/lib/module/hooks/useRookAndroidBackgroundSteps.js.map +1 -1
- package/lib/module/hooks/useRookAppleHealth.js +11 -23
- package/lib/module/hooks/useRookAppleHealth.js.map +1 -1
- package/lib/module/hooks/useRookConfiguration.js +10 -109
- package/lib/module/hooks/useRookConfiguration.js.map +1 -1
- package/lib/module/hooks/useRookData.js +35 -33
- package/lib/module/hooks/useRookData.js.map +1 -1
- package/lib/module/hooks/useRookHealthConnect.js +9 -10
- package/lib/module/hooks/useRookHealthConnect.js.map +1 -1
- package/lib/module/hooks/useRookPermissions.js +39 -77
- package/lib/module/hooks/useRookPermissions.js.map +1 -1
- package/lib/module/hooks/useRookSamsungHealth.js +35 -0
- package/lib/module/hooks/useRookSamsungHealth.js.map +1 -0
- package/lib/module/hooks/useRookSync.js +23 -31
- package/lib/module/hooks/useRookSync.js.map +1 -1
- package/lib/module/hooks/useRookVariables.js +24 -18
- package/lib/module/hooks/useRookVariables.js.map +1 -1
- package/lib/module/index.js +18 -5
- package/lib/module/index.js.map +1 -1
- package/lib/module/modules/hook/useRookAutoSync.js +22 -36
- package/lib/module/modules/hook/useRookAutoSync.js.map +1 -1
- package/lib/module/modules/types/sendMessageBroadcast.js +1 -1
- package/lib/module/modules/utils/errors.js +2 -0
- package/lib/module/modules/utils/errors.js.map +1 -1
- package/lib/module/package.json +1 -0
- package/lib/module/types/ActivityEvent.js +2 -0
- package/lib/module/types/AppleHealthPermissions.js +53 -0
- package/lib/module/types/AppleHealthPermissions.js.map +1 -0
- package/lib/module/types/AuthorizedSources.js +2 -0
- package/lib/module/types/BodySummary.js +2 -0
- package/lib/module/types/DataSource.js +10 -0
- package/lib/module/types/DataSource.js.map +1 -1
- package/lib/module/types/HeartRateEvent.js +2 -0
- package/lib/{commonjs/types/DataSource.js.map → module/types/HeartRateEvent.js.map} +1 -1
- package/lib/module/types/PermissionsType.js +1 -1
- package/lib/module/types/PhysicalSummary.js +2 -0
- package/lib/module/types/Rook.js +2 -0
- package/lib/{commonjs/types/SyncTypes.js.map → module/types/Rook.js.map} +1 -1
- package/lib/module/types/SDKSources.js +2 -0
- package/lib/module/types/SDKSources.js.map +1 -1
- package/lib/module/types/SamsungHealthPermissions.js +3 -0
- package/lib/module/types/SamsungHealthPermissions.js.map +1 -1
- package/lib/module/types/SleepSummary.js +2 -0
- package/lib/module/types/SummaryTypes.js +1 -1
- package/lib/module/types/SyncTypes.js +28 -1
- package/lib/module/types/SyncTypes.js.map +1 -1
- package/lib/module/utils/isModuleReady.js +2 -0
- package/lib/module/utils/isModuleReady.js.map +1 -1
- package/lib/module/utils/isRunningOnAndroid.js +2 -0
- package/lib/module/utils/isRunningOnAndroid.js.map +1 -1
- package/lib/module/utils/isRunningOniOS.js +2 -0
- package/lib/module/utils/isRunningOniOS.js.map +1 -1
- package/lib/module/utils/isValidDate.js +2 -0
- package/lib/module/utils/isValidDate.js.map +1 -1
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/NativeRookSdk.d.ts +190 -0
- package/lib/typescript/src/NativeRookSdk.d.ts.map +1 -0
- package/lib/typescript/src/context/RookSyncGateContext.d.ts.map +1 -1
- package/lib/typescript/src/context/RookSyncGateProvider.d.ts.map +1 -1
- package/lib/typescript/src/context/RookSyncGateReducer.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookAPISources.d.ts +15 -0
- package/lib/typescript/src/hooks/useRookAPISources.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRookAndroidBackgroundSteps.d.ts +0 -1
- package/lib/typescript/src/hooks/useRookAndroidBackgroundSteps.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookAppleHealth.d.ts +1 -2
- package/lib/typescript/src/hooks/useRookAppleHealth.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookConfiguration.d.ts +0 -8
- package/lib/typescript/src/hooks/useRookConfiguration.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookData.d.ts +2 -0
- package/lib/typescript/src/hooks/useRookData.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookHealthConnect.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookPermissions.d.ts +11 -12
- package/lib/typescript/src/hooks/useRookPermissions.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookSamsungHealth.d.ts +7 -0
- package/lib/typescript/src/hooks/useRookSamsungHealth.d.ts.map +1 -0
- package/lib/typescript/src/hooks/useRookSync.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookVariables.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +19 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/modules/hook/useRookAutoSync.d.ts.map +1 -1
- package/lib/typescript/src/types/AppleHealthPermissions.d.ts +50 -0
- package/lib/typescript/src/types/AppleHealthPermissions.d.ts.map +1 -0
- package/lib/typescript/src/types/AuthorizedSources.d.ts +3 -3
- package/lib/typescript/src/types/AuthorizedSources.d.ts.map +1 -1
- package/lib/typescript/src/types/DataSource.d.ts +8 -1
- package/lib/typescript/src/types/DataSource.d.ts.map +1 -1
- package/lib/typescript/src/types/HeartRateEvent.d.ts +24 -0
- package/lib/typescript/src/types/HeartRateEvent.d.ts.map +1 -0
- package/lib/typescript/src/types/PermissionsType.d.ts +0 -4
- package/lib/typescript/src/types/PermissionsType.d.ts.map +1 -1
- package/lib/typescript/src/types/Rook.d.ts +9 -0
- package/lib/typescript/src/types/Rook.d.ts.map +1 -0
- package/lib/typescript/src/types/SamsungHealthPermissions.d.ts +1 -0
- package/lib/typescript/src/types/SamsungHealthPermissions.d.ts.map +1 -1
- package/lib/typescript/src/types/SyncTypes.d.ts +28 -5
- package/lib/typescript/src/types/SyncTypes.d.ts.map +1 -1
- package/lib/typescript/src/utils/isModuleReady.d.ts.map +1 -1
- package/lib/typescript/src/utils/isValidDate.d.ts.map +1 -1
- package/package.json +94 -98
- package/src/NativeRookSdk.ts +282 -0
- package/{lib/commonjs/context/RookSyncGateContext.js → src/context/RookSyncGateContext.ts} +10 -13
- package/src/context/RookSyncGateProvider.tsx +78 -0
- package/{lib/commonjs/context/RookSyncGateReducer.js → src/context/RookSyncGateReducer.ts} +12 -33
- package/src/context/RookSyncGateTypes.ts +34 -0
- package/src/hooks/useRookAPISources.ts +83 -0
- package/src/hooks/useRookAndroidBackgroundSteps.ts +81 -0
- package/src/hooks/useRookAppleHealth.ts +55 -0
- package/src/hooks/useRookConfiguration.ts +82 -0
- package/src/hooks/useRookData.ts +122 -0
- package/src/hooks/useRookHealthConnect.ts +59 -0
- package/src/hooks/useRookPermissions.ts +224 -0
- package/src/hooks/useRookSamsungHealth.ts +37 -0
- package/src/hooks/useRookSync.ts +157 -0
- package/src/hooks/useRookVariables.ts +77 -0
- package/src/index.tsx +28 -0
- package/src/modules/hook/useRookAutoSync.ts +305 -0
- package/src/modules/types/sendMessageBroadcast.ts +5 -0
- package/src/modules/utils/errors.ts +9 -0
- package/src/types/ActivityEvent.ts +159 -0
- package/src/types/AppleHealthPermissions.ts +49 -0
- package/src/types/AuthorizedSources.ts +33 -0
- package/src/types/BodySummary.ts +116 -0
- package/src/types/DataSource.ts +16 -0
- package/src/types/HeartRateEvent.ts +26 -0
- package/src/types/PermissionsType.ts +9 -0
- package/src/types/PhysicalSummary.ts +84 -0
- package/src/types/Rook.ts +8 -0
- package/src/types/SDKSources.ts +5 -0
- package/src/types/SamsungHealthPermissions.ts +16 -0
- package/src/types/SleepSummary.ts +66 -0
- package/src/types/SummaryTypes.ts +70 -0
- package/src/types/SyncTypes.ts +63 -0
- package/{lib/commonjs/utils/isModuleReady.js → src/utils/isModuleReady.ts} +4 -10
- package/src/utils/isRunningOnAndroid.ts +10 -0
- package/src/utils/isRunningOniOS.ts +10 -0
- package/{lib/commonjs/utils/isValidDate.js → src/utils/isValidDate.ts} +5 -10
- package/android/src/main/AndroidManifestNew.xml +0 -36
- package/android/src/main/java/com/rooksdk/broadcasts/AndroidPermissionsReceiverTransmitter.kt +0 -65
- package/android/src/main/java/com/rooksdk/broadcasts/HealthConnectPermissionsReceiverTransmitter.kt +0 -70
- package/android/src/main/java/com/rooksdk/broadcasts/SamsungHealthPermissionsReceiverTransmitter.kt +0 -52
- package/android/src/main/java/com/rooksdk/modules/RookBackgroundSyncModule.kt +0 -85
- package/android/src/main/java/com/rooksdk/modules/RookConfigurationModule.kt +0 -148
- package/android/src/main/java/com/rooksdk/modules/RookLocalData.kt +0 -247
- package/android/src/main/java/com/rooksdk/modules/RookPermissionsModule.kt +0 -309
- package/android/src/main/java/com/rooksdk/modules/RookStepsModule.kt +0 -105
- package/android/src/main/java/com/rooksdk/modules/RookSyncModule.kt +0 -496
- package/android/src/main/java/com/rooksdk/utils/DatasourcesUtils.kt +0 -63
- package/android/src/main/java/com/rooksdk/utils/PermissionConversion.kt +0 -21
- package/android/src/main/java/com/rooksdk/utils/ReadableToWritable.kt +0 -64
- package/android/src/main/java/com/rooksdk/utils/RookDateTime.kt +0 -20
- package/android/src/main/java/com/rooksdk/utils/SamsungAvailability.kt +0 -21
- package/android/src/main/java/com/rooksdk/utils/Source.kt +0 -6
- package/android/src/main/java/com/rooksdk/utils/StringToSyncType.kt +0 -58
- package/android/src/main/java/com/rooksdk/utils/serializers/InstantSerializer.kt +0 -19
- package/android/src/main/java/com/rooksdk/utils/serializers/LocalDateSerializer.kt +0 -21
- package/android/src/main/res/drawable/ic_health_connect.xml +0 -19
- package/android/src/main/res/values/themes.xml +0 -3
- package/ios/EncodableRookDataSource.swift +0 -36
- package/ios/EncodableStatusDataSources.swift +0 -47
- package/ios/RookBackgroundModule.h +0 -5
- package/ios/RookBackgroundModule.mm +0 -89
- package/ios/RookConfigurationModule.h +0 -5
- package/ios/RookConfigurationModule.mm +0 -163
- package/ios/RookExternalModule.h +0 -5
- package/ios/RookExternalModule.m +0 -27
- package/ios/RookLocalData.swift +0 -152
- package/ios/RookPermissionsModule.h +0 -5
- package/ios/RookPermissionsModule.mm +0 -180
- package/ios/RookSourcesModule.h +0 -5
- package/ios/RookSourcesModule.mm +0 -67
- package/ios/RookSync.h +0 -5
- package/ios/RookSync.m +0 -27
- package/ios/RookSyncModule.h +0 -5
- package/ios/RookSyncModule.mm +0 -476
- package/ios/SwiftTest.swift +0 -18
- package/ios/react-native-rook-sdk-Bridging-Header.h +0 -12
- package/lib/commonjs/context/RookSyncGateContext.js.map +0 -1
- package/lib/commonjs/context/RookSyncGateProvider.js +0 -98
- package/lib/commonjs/context/RookSyncGateProvider.js.map +0 -1
- package/lib/commonjs/context/RookSyncGateReducer.js.map +0 -1
- package/lib/commonjs/context/RookSyncGateTypes.js +0 -6
- package/lib/commonjs/context/RookSyncGateTypes.js.map +0 -1
- package/lib/commonjs/context/index.js +0 -14
- package/lib/commonjs/context/index.js.map +0 -1
- package/lib/commonjs/hooks/index.js +0 -90
- package/lib/commonjs/hooks/index.js.map +0 -1
- package/lib/commonjs/hooks/useRookAndroidBackgroundSteps.js +0 -100
- package/lib/commonjs/hooks/useRookAndroidBackgroundSteps.js.map +0 -1
- package/lib/commonjs/hooks/useRookAppleHealth.js +0 -74
- package/lib/commonjs/hooks/useRookAppleHealth.js.map +0 -1
- package/lib/commonjs/hooks/useRookAppleHealthVariables.js +0 -48
- package/lib/commonjs/hooks/useRookAppleHealthVariables.js.map +0 -1
- package/lib/commonjs/hooks/useRookConfiguration.js +0 -188
- package/lib/commonjs/hooks/useRookConfiguration.js.map +0 -1
- package/lib/commonjs/hooks/useRookData.js +0 -100
- package/lib/commonjs/hooks/useRookData.js.map +0 -1
- package/lib/commonjs/hooks/useRookDataSources.js +0 -118
- package/lib/commonjs/hooks/useRookDataSources.js.map +0 -1
- package/lib/commonjs/hooks/useRookEvents.js +0 -225
- package/lib/commonjs/hooks/useRookEvents.js.map +0 -1
- package/lib/commonjs/hooks/useRookHealthConnect.js +0 -70
- package/lib/commonjs/hooks/useRookHealthConnect.js.map +0 -1
- package/lib/commonjs/hooks/useRookPermissions.js +0 -226
- package/lib/commonjs/hooks/useRookPermissions.js.map +0 -1
- package/lib/commonjs/hooks/useRookSummaries.js +0 -85
- package/lib/commonjs/hooks/useRookSummaries.js.map +0 -1
- package/lib/commonjs/hooks/useRookSync.js +0 -147
- package/lib/commonjs/hooks/useRookSync.js.map +0 -1
- package/lib/commonjs/hooks/useRookVariables.js +0 -69
- package/lib/commonjs/hooks/useRookVariables.js.map +0 -1
- package/lib/commonjs/index.js +0 -56
- package/lib/commonjs/index.js.map +0 -1
- package/lib/commonjs/modules/hook/useRookAutoSync.js +0 -262
- package/lib/commonjs/modules/hook/useRookAutoSync.js.map +0 -1
- package/lib/commonjs/modules/types/sendMessageBroadcast.js +0 -2
- package/lib/commonjs/modules/types/sendMessageBroadcast.js.map +0 -1
- package/lib/commonjs/modules/utils/errors.js +0 -12
- package/lib/commonjs/modules/utils/errors.js.map +0 -1
- package/lib/commonjs/types/ActivityEvent.js +0 -6
- package/lib/commonjs/types/ActivityEvent.js.map +0 -1
- package/lib/commonjs/types/AuthorizedSources.js +0 -2
- package/lib/commonjs/types/AuthorizedSources.js.map +0 -1
- package/lib/commonjs/types/BodySummary.js +0 -6
- package/lib/commonjs/types/BodySummary.js.map +0 -1
- package/lib/commonjs/types/DataSource.js +0 -2
- package/lib/commonjs/types/PermissionsType.js +0 -2
- package/lib/commonjs/types/PermissionsType.js.map +0 -1
- package/lib/commonjs/types/PhysicalSummary.js +0 -6
- package/lib/commonjs/types/PhysicalSummary.js.map +0 -1
- package/lib/commonjs/types/SDKSources.js +0 -13
- package/lib/commonjs/types/SDKSources.js.map +0 -1
- package/lib/commonjs/types/SamsungHealthPermissions.js +0 -23
- package/lib/commonjs/types/SamsungHealthPermissions.js.map +0 -1
- package/lib/commonjs/types/SleepSummary.js +0 -6
- package/lib/commonjs/types/SleepSummary.js.map +0 -1
- package/lib/commonjs/types/SummaryTypes.js +0 -2
- package/lib/commonjs/types/SummaryTypes.js.map +0 -1
- package/lib/commonjs/types/SyncTypes.js +0 -6
- package/lib/commonjs/utils/credentials.js +0 -12
- package/lib/commonjs/utils/credentials.js.map +0 -1
- package/lib/commonjs/utils/getNativeModule.js +0 -29
- package/lib/commonjs/utils/getNativeModule.js.map +0 -1
- package/lib/commonjs/utils/getRookModule.js +0 -28
- package/lib/commonjs/utils/getRookModule.js.map +0 -1
- package/lib/commonjs/utils/isModuleReady.js.map +0 -1
- package/lib/commonjs/utils/isRunningOnAndroid.js +0 -15
- package/lib/commonjs/utils/isRunningOnAndroid.js.map +0 -1
- package/lib/commonjs/utils/isRunningOniOS.js +0 -15
- package/lib/commonjs/utils/isRunningOniOS.js.map +0 -1
- package/lib/commonjs/utils/isValidDate.js.map +0 -1
- package/lib/commonjs/utils/nativeModules.js +0 -28
- package/lib/commonjs/utils/nativeModules.js.map +0 -1
- package/lib/commonjs/utils/packageInfo.js +0 -13
- package/lib/commonjs/utils/packageInfo.js.map +0 -1
- package/lib/module/context/index.js +0 -2
- package/lib/module/context/index.js.map +0 -1
- package/lib/module/hooks/index.js +0 -13
- package/lib/module/hooks/index.js.map +0 -1
- package/lib/module/hooks/useRookAppleHealthVariables.js +0 -41
- package/lib/module/hooks/useRookAppleHealthVariables.js.map +0 -1
- package/lib/module/hooks/useRookDataSources.js +0 -110
- package/lib/module/hooks/useRookDataSources.js.map +0 -1
- package/lib/module/hooks/useRookEvents.js +0 -218
- package/lib/module/hooks/useRookEvents.js.map +0 -1
- package/lib/module/hooks/useRookSummaries.js +0 -78
- package/lib/module/hooks/useRookSummaries.js.map +0 -1
- package/lib/module/utils/credentials.js +0 -6
- package/lib/module/utils/credentials.js.map +0 -1
- package/lib/module/utils/getNativeModule.js +0 -23
- package/lib/module/utils/getNativeModule.js.map +0 -1
- package/lib/module/utils/getRookModule.js +0 -22
- package/lib/module/utils/getRookModule.js.map +0 -1
- package/lib/module/utils/nativeModules.js +0 -22
- package/lib/module/utils/nativeModules.js.map +0 -1
- package/lib/module/utils/packageInfo.js +0 -7
- package/lib/module/utils/packageInfo.js.map +0 -1
- package/lib/typescript/src/context/index.d.ts +0 -2
- package/lib/typescript/src/context/index.d.ts.map +0 -1
- package/lib/typescript/src/hooks/index.d.ts +0 -13
- package/lib/typescript/src/hooks/index.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useRookAppleHealthVariables.d.ts +0 -15
- package/lib/typescript/src/hooks/useRookAppleHealthVariables.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useRookDataSources.d.ts +0 -22
- package/lib/typescript/src/hooks/useRookDataSources.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useRookEvents.d.ts +0 -26
- package/lib/typescript/src/hooks/useRookEvents.d.ts.map +0 -1
- package/lib/typescript/src/hooks/useRookSummaries.d.ts +0 -14
- package/lib/typescript/src/hooks/useRookSummaries.d.ts.map +0 -1
- package/lib/typescript/src/utils/credentials.d.ts +0 -5
- package/lib/typescript/src/utils/credentials.d.ts.map +0 -1
- package/lib/typescript/src/utils/getNativeModule.d.ts +0 -10
- package/lib/typescript/src/utils/getNativeModule.d.ts.map +0 -1
- package/lib/typescript/src/utils/getRookModule.d.ts +0 -9
- package/lib/typescript/src/utils/getRookModule.d.ts.map +0 -1
- package/lib/typescript/src/utils/nativeModules.d.ts +0 -23
- package/lib/typescript/src/utils/nativeModules.d.ts.map +0 -1
- package/lib/typescript/src/utils/packageInfo.d.ts +0 -6
- package/lib/typescript/src/utils/packageInfo.d.ts.map +0 -1
- package/react-native-rook-sdk.podspec +0 -45
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
//
|
|
2
|
+
// HearRateMapper.swift
|
|
3
|
+
// RNRookSdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Javier Villanueva on 18/12/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import RookSDK
|
|
9
|
+
|
|
10
|
+
struct HeartRateMapper {
|
|
11
|
+
|
|
12
|
+
private let dateHelper: DateHelper = DateHelper()
|
|
13
|
+
|
|
14
|
+
func map(_ data: RookHeartRate) -> [String: Any?] {
|
|
15
|
+
return [
|
|
16
|
+
"hrMaximumBPM" : data.hrMaximumBPM,
|
|
17
|
+
"hrMinimumBPM": data.hrMinimumBPM,
|
|
18
|
+
"hrAverageBPM": data.hrAverageBMP,
|
|
19
|
+
"hrRestingBPM": data.hrRestingBPM,
|
|
20
|
+
"hrvAverageRMSSD": data.hrvAverageRMSSD,
|
|
21
|
+
"hrvAverageSDNN": data.hrvAverageSDNN,
|
|
22
|
+
"hrGranularData": data.hrGranularData?.map({
|
|
23
|
+
[
|
|
24
|
+
"dateTime": dateHelper.getISO8601StringDate(date: $0.dateTime),
|
|
25
|
+
"hrBPM": $0.hrBPM
|
|
26
|
+
]
|
|
27
|
+
}),
|
|
28
|
+
"hrvSDNNGranularData": data.hrvSDNNGranularData?.map({
|
|
29
|
+
[
|
|
30
|
+
"dateTime": dateHelper.getISO8601StringDate(date: $0.dateTime),
|
|
31
|
+
"hrvSDNN": $0.hrv
|
|
32
|
+
]
|
|
33
|
+
}),
|
|
34
|
+
"hrvRMSSDGranularData": data.hrvRMSSDGranularData?.map({
|
|
35
|
+
[
|
|
36
|
+
"dateTime": dateHelper.getISO8601StringDate(date: $0.dateTime),
|
|
37
|
+
"hrvRmssd": $0.hrv
|
|
38
|
+
]
|
|
39
|
+
})
|
|
40
|
+
]
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
//
|
|
2
|
+
// File.swift
|
|
3
|
+
// RNRookSdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Javier Villanueva on 17/12/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import RookSDK
|
|
9
|
+
import React
|
|
10
|
+
|
|
11
|
+
@objcMembers public class RookBackground: NSObject {
|
|
12
|
+
|
|
13
|
+
public func enableBackGroundUpdates(
|
|
14
|
+
_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
15
|
+
) {
|
|
16
|
+
RookConnectConfigurationManager.shared.enableSync()
|
|
17
|
+
resolve(true)
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
public func disableBackGroundUpdates(
|
|
21
|
+
_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
22
|
+
){
|
|
23
|
+
RookConnectConfigurationManager.shared.disableSync()
|
|
24
|
+
resolve(true)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
public func isBackgroundUpdatesEnabled(
|
|
28
|
+
_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
29
|
+
) {
|
|
30
|
+
let result = RookConnectConfigurationManager.shared.isSyncEnable()
|
|
31
|
+
|
|
32
|
+
resolve(result)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
//
|
|
2
|
+
// File.swift
|
|
3
|
+
// RNRookSdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Javier Villanueva on 17/12/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import React
|
|
9
|
+
import RookSDK
|
|
10
|
+
|
|
11
|
+
@objcMembers public class RookConfiguration: NSObject {
|
|
12
|
+
lazy var userManager: UserManager = {
|
|
13
|
+
return UserManager()
|
|
14
|
+
}()
|
|
15
|
+
|
|
16
|
+
public func getUserID(
|
|
17
|
+
_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
18
|
+
) {
|
|
19
|
+
Task {
|
|
20
|
+
do {
|
|
21
|
+
let user = try await userManager.getUserId()
|
|
22
|
+
|
|
23
|
+
DispatchQueue.main.async {
|
|
24
|
+
resolve(user)
|
|
25
|
+
}
|
|
26
|
+
} catch {
|
|
27
|
+
if let rookError: RookError = error as? RookError {
|
|
28
|
+
DispatchQueue.main.async {
|
|
29
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
30
|
+
}
|
|
31
|
+
} else {
|
|
32
|
+
DispatchQueue.main.async {
|
|
33
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public func updateUserID(
|
|
41
|
+
_ userID: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
42
|
+
){
|
|
43
|
+
Task {
|
|
44
|
+
do {
|
|
45
|
+
|
|
46
|
+
let result = try await userManager.updateUserId(userID)
|
|
47
|
+
|
|
48
|
+
DispatchQueue.main.async {
|
|
49
|
+
resolve(result)
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
} catch {
|
|
53
|
+
if let rookError: RookError = error as? RookError {
|
|
54
|
+
DispatchQueue.main.async {
|
|
55
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
56
|
+
}
|
|
57
|
+
} else {
|
|
58
|
+
DispatchQueue.main.async {
|
|
59
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public func removeUserFromRook(
|
|
67
|
+
_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
68
|
+
) {
|
|
69
|
+
Task {
|
|
70
|
+
do {
|
|
71
|
+
|
|
72
|
+
let result = try await userManager.removeUserFromRook()
|
|
73
|
+
|
|
74
|
+
DispatchQueue.main.async {
|
|
75
|
+
resolve(result)
|
|
76
|
+
}
|
|
77
|
+
} catch {
|
|
78
|
+
if let rookError: RookError = error as? RookError {
|
|
79
|
+
DispatchQueue.main.async {
|
|
80
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
81
|
+
}
|
|
82
|
+
} else {
|
|
83
|
+
DispatchQueue.main.async {
|
|
84
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
public func syncUserTimeZone(
|
|
92
|
+
_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
93
|
+
){
|
|
94
|
+
Task {
|
|
95
|
+
do {
|
|
96
|
+
|
|
97
|
+
let result = try await userManager.syncUserTimeZone()
|
|
98
|
+
|
|
99
|
+
DispatchQueue.main.async {
|
|
100
|
+
resolve(result)
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
} catch {
|
|
104
|
+
if let rookError: RookError = error as? RookError {
|
|
105
|
+
DispatchQueue.main.async {
|
|
106
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
107
|
+
}
|
|
108
|
+
} else {
|
|
109
|
+
DispatchQueue.main.async {
|
|
110
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RookData.swift
|
|
3
|
+
// RNRookSdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Javier Villanueva on 18/12/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import RookSDK
|
|
9
|
+
import React
|
|
10
|
+
|
|
11
|
+
@objcMembers public class RookData: NSObject {
|
|
12
|
+
|
|
13
|
+
lazy var summaryManager: RookSummaryManager = {
|
|
14
|
+
return RookSummaryManager()
|
|
15
|
+
}()
|
|
16
|
+
|
|
17
|
+
lazy var eventManager: RookEventsManager = {
|
|
18
|
+
return RookEventsManager()
|
|
19
|
+
}()
|
|
20
|
+
|
|
21
|
+
lazy var dateHelper: DateHelper = {
|
|
22
|
+
return DateHelper()
|
|
23
|
+
}()
|
|
24
|
+
|
|
25
|
+
public func getAppleHealthSleepSummary(
|
|
26
|
+
_ date: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
27
|
+
) {
|
|
28
|
+
Task {
|
|
29
|
+
do {
|
|
30
|
+
guard let parsed: Date = dateHelper.getDateFromString(stringDate: date) else {
|
|
31
|
+
reject("AppleHealthGetPhysicalSummaryError", "Invalid date format", nil)
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
let sleepSummaries = try await summaryManager.getSleepSummary(date: parsed)
|
|
36
|
+
let dic = sleepSummaries.map { $0.toDictionary() }
|
|
37
|
+
|
|
38
|
+
DispatchQueue.main.async {
|
|
39
|
+
resolve(dic)
|
|
40
|
+
}
|
|
41
|
+
} catch {
|
|
42
|
+
if let rookError: RookError = error as? RookError {
|
|
43
|
+
DispatchQueue.main.async {
|
|
44
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
45
|
+
}
|
|
46
|
+
} else {
|
|
47
|
+
DispatchQueue.main.async {
|
|
48
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
public func getAppleHealthPhysicalSummary(
|
|
56
|
+
_ date: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
57
|
+
) {
|
|
58
|
+
Task {
|
|
59
|
+
do {
|
|
60
|
+
guard let parsed = dateHelper.getDateFromString(stringDate: date) else {
|
|
61
|
+
reject("AppleHealthGetPhysicalSummaryError", "Invalid date format", nil)
|
|
62
|
+
return
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
let physicalSummaries = try await summaryManager.getPhysicalSummary(date: parsed)
|
|
66
|
+
let dic = physicalSummaries.toDictionary()
|
|
67
|
+
|
|
68
|
+
DispatchQueue.main.async {
|
|
69
|
+
resolve(dic)
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
} catch {
|
|
73
|
+
if let rookError: RookError = error as? RookError {
|
|
74
|
+
DispatchQueue.main.async {
|
|
75
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
76
|
+
}
|
|
77
|
+
} else {
|
|
78
|
+
DispatchQueue.main.async {
|
|
79
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public func getAppleHealthBodySummary(
|
|
87
|
+
_ date: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
88
|
+
) {
|
|
89
|
+
Task {
|
|
90
|
+
do {
|
|
91
|
+
guard let parsed = dateHelper.getDateFromString(stringDate: date) else {
|
|
92
|
+
reject("AppleHealthGetBodySummaryError", "Invalid date format", nil)
|
|
93
|
+
return
|
|
94
|
+
}
|
|
95
|
+
let bodySummaries = try await summaryManager.getBodySummary(date: parsed)
|
|
96
|
+
let dic = bodySummaries.toDictionary()
|
|
97
|
+
|
|
98
|
+
DispatchQueue.main.async {
|
|
99
|
+
resolve(dic)
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
} catch {
|
|
103
|
+
if let rookError: RookError = error as? RookError {
|
|
104
|
+
DispatchQueue.main.async {
|
|
105
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
106
|
+
}
|
|
107
|
+
} else {
|
|
108
|
+
DispatchQueue.main.async {
|
|
109
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
public func getAppleHealthActivityEvents(
|
|
117
|
+
_ date: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
118
|
+
) {
|
|
119
|
+
Task {
|
|
120
|
+
do {
|
|
121
|
+
guard let parsed = dateHelper.getDateFromString(stringDate: date) else {
|
|
122
|
+
reject("AppleHealthGetActivityEventsError", "Invalid date format", nil)
|
|
123
|
+
return
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
let activityEvents = try await eventManager.getActivityEvents(date: parsed)
|
|
127
|
+
let dic = activityEvents.map { $0.toDictionary() }
|
|
128
|
+
|
|
129
|
+
DispatchQueue.main.async {
|
|
130
|
+
resolve(dic)
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
} catch {
|
|
134
|
+
if let rookError: RookError = error as? RookError {
|
|
135
|
+
DispatchQueue.main.async {
|
|
136
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
137
|
+
}
|
|
138
|
+
} else {
|
|
139
|
+
DispatchQueue.main.async {
|
|
140
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
public func getTodayHeartRate(
|
|
148
|
+
_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
149
|
+
){
|
|
150
|
+
Task {
|
|
151
|
+
do {
|
|
152
|
+
let result = try await eventManager.getTodayHeartRate()
|
|
153
|
+
let mapper: HeartRateMapper = HeartRateMapper()
|
|
154
|
+
let data: [String: Any?] = mapper.map(result)
|
|
155
|
+
|
|
156
|
+
DispatchQueue.main.async {
|
|
157
|
+
resolve(data)
|
|
158
|
+
}
|
|
159
|
+
} catch {
|
|
160
|
+
if let rookError: RookError = error as? RookError {
|
|
161
|
+
DispatchQueue.main.async {
|
|
162
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
163
|
+
}
|
|
164
|
+
} else {
|
|
165
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RookSdk.swift
|
|
3
|
+
// Pods
|
|
4
|
+
//
|
|
5
|
+
// Created by Javier Villanueva on 15/12/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import React
|
|
9
|
+
import RookSDK
|
|
10
|
+
|
|
11
|
+
@objcMembers public class RookEntry: NSObject {
|
|
12
|
+
public let EVENT_NAME = EventNames.errorBackGround
|
|
13
|
+
|
|
14
|
+
public func initRook(
|
|
15
|
+
_ options: NSDictionary, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
16
|
+
){
|
|
17
|
+
Task {
|
|
18
|
+
do {
|
|
19
|
+
|
|
20
|
+
let environment = options["environment"] as? String ?? ""
|
|
21
|
+
let clientUUID = options["clientUUID"] as? String ?? ""
|
|
22
|
+
let password = options["password"] as? String ?? ""
|
|
23
|
+
let eventsBackgroundSync = options["enableEventsBackgroundSync"] as? Bool ?? true
|
|
24
|
+
let backgroundSync = options["enableBackground"] as? Bool ?? true
|
|
25
|
+
|
|
26
|
+
if (environment == "production") {
|
|
27
|
+
RookConnectConfigurationManager.shared.setEnvironment(.production)
|
|
28
|
+
} else {
|
|
29
|
+
RookConnectConfigurationManager.shared.setEnvironment(.sandbox)
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
RookConnectConfigurationManager.shared.setConfiguration(
|
|
33
|
+
clientUUID: clientUUID,
|
|
34
|
+
secretKey: password,
|
|
35
|
+
enableBackgroundSync: backgroundSync,
|
|
36
|
+
enableEventsBackgroundSync: eventsBackgroundSync)
|
|
37
|
+
|
|
38
|
+
let result = try await RookConnectConfigurationManager.shared.initRook()
|
|
39
|
+
|
|
40
|
+
DispatchQueue.main.async {
|
|
41
|
+
resolve(result)
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
} catch {
|
|
45
|
+
if let rookError: RookError = error as? RookError {
|
|
46
|
+
DispatchQueue.main.async {
|
|
47
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
48
|
+
}
|
|
49
|
+
} else {
|
|
50
|
+
DispatchQueue.main.async {
|
|
51
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public func initBroadcast() {
|
|
59
|
+
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
//
|
|
2
|
+
// RookPermissions.swift
|
|
3
|
+
// RNRookSdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Javier Villanueva on 17/12/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import React
|
|
9
|
+
import RookSDK
|
|
10
|
+
|
|
11
|
+
@objcMembers public class RookPermissions: NSObject {
|
|
12
|
+
lazy var permissionsManager: RookConnectPermissionsManager = {
|
|
13
|
+
return RookConnectPermissionsManager()
|
|
14
|
+
}()
|
|
15
|
+
|
|
16
|
+
public func checkPermissionsStatus(
|
|
17
|
+
_ type: String, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
18
|
+
) {
|
|
19
|
+
Task {
|
|
20
|
+
do {
|
|
21
|
+
|
|
22
|
+
let result = await permissionsManager.checkPermissionStatus(type: type)
|
|
23
|
+
|
|
24
|
+
DispatchQueue.main.async {
|
|
25
|
+
resolve(result)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
} catch {
|
|
29
|
+
if let rookError: RookError = error as? RookError {
|
|
30
|
+
DispatchQueue.main.async {
|
|
31
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public func requestAppleHealthPermissions(
|
|
41
|
+
_ permissions: [String]?, resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
42
|
+
) {
|
|
43
|
+
Task {
|
|
44
|
+
do {
|
|
45
|
+
let perms = permissions ?? []
|
|
46
|
+
let healthTypes = perms.compactMap { HealthDataType(rawValue: $0) }
|
|
47
|
+
|
|
48
|
+
let result = try await permissionsManager.requestPermissions(healthTypes)
|
|
49
|
+
|
|
50
|
+
DispatchQueue.main.async {
|
|
51
|
+
resolve(result)
|
|
52
|
+
}
|
|
53
|
+
} catch {
|
|
54
|
+
if let rookError: RookError = error as? RookError {
|
|
55
|
+
DispatchQueue.main.async {
|
|
56
|
+
reject(String(rookError.code), rookError.errorDescription, error as NSError)
|
|
57
|
+
}
|
|
58
|
+
} else {
|
|
59
|
+
reject("1001", "An error ocurred with SDK try again", error as NSError)
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public func openAppleHealthSettings(
|
|
66
|
+
_ resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock
|
|
67
|
+
){
|
|
68
|
+
guard let urlSettings = URL(string: "x-apple-health://") else {
|
|
69
|
+
reject("1001", "An error ocurred with SDK try again", nil)
|
|
70
|
+
return
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
DispatchQueue.main.async {
|
|
74
|
+
UIApplication.shared.open(urlSettings, options: [:]) { success in
|
|
75
|
+
resolve(success)
|
|
76
|
+
}
|
|
77
|
+
}}
|
|
78
|
+
}
|
package/ios/RookSdk.h
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
|
-
#import <React/RCTEventEmitter.h>
|
|
2
1
|
#import <React/RCTBridgeModule.h>
|
|
2
|
+
#import <React/RCTInitializing.h>
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
5
|
+
#import <RookSdkSpec/RookSdkSpec.h>
|
|
6
|
+
#endif
|
|
7
|
+
|
|
8
|
+
#ifdef RCT_NEW_ARCH_ENABLED
|
|
9
|
+
|
|
10
|
+
// NEW ARCHITECTURE: Inherit from the generated Base class
|
|
11
|
+
@interface RNRookSdk : NativeRookSdkSpecBase <NativeRookSdkSpec, RCTInitializing>
|
|
12
|
+
#else
|
|
13
|
+
|
|
14
|
+
// OLD ARCHITECTURE: Inherit from NSObject and conform to RCTBridgeModule
|
|
15
|
+
@interface RNRookSdk : NSObject <RCTBridgeModule, RCTInitializing>
|
|
16
|
+
#endif
|
|
5
17
|
|
|
6
18
|
@end
|