react-native-rook-sdk 2.1.1 → 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 +4 -5
- 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
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
package com.rooksdk.modules
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.Promise
|
|
4
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
6
|
-
import com.facebook.react.bridge.ReactMethod
|
|
7
|
-
import com.facebook.react.bridge.ReadableArray
|
|
8
|
-
import com.rookmotion.rook.sdk.RookPermissionsManager
|
|
9
|
-
import com.rookmotion.rook.sdk.domain.enums.BackgroundReadStatus
|
|
10
|
-
import com.rookmotion.rook.sdk.domain.enums.HealthConnectAvailability
|
|
11
|
-
import com.rookmotion.rook.sdk.domain.enums.RequestPermissionsStatus
|
|
12
|
-
import com.rooksdk.utils.PermissionConversion
|
|
13
|
-
import com.rooksdk.utils.SamsungAvailability
|
|
14
|
-
import io.tryrook.sdk.samsung.RookSamsung
|
|
15
|
-
import io.tryrook.sdk.samsung.domain.enums.SHRequestPermissionsStatus
|
|
16
|
-
import io.tryrook.sdk.samsung.domain.enums.SamsungHealthAvailability
|
|
17
|
-
import io.tryrook.sdk.samsung.domain.enums.SamsungHealthPermission
|
|
18
|
-
import kotlinx.coroutines.CoroutineScope
|
|
19
|
-
import kotlinx.coroutines.Dispatchers
|
|
20
|
-
import kotlinx.coroutines.SupervisorJob
|
|
21
|
-
import kotlinx.coroutines.launch
|
|
22
|
-
|
|
23
|
-
class RookPermissionsModule(reactContext: ReactApplicationContext, private val rookSamsung: RookSamsung):
|
|
24
|
-
ReactContextBaseJavaModule(reactContext) {
|
|
25
|
-
|
|
26
|
-
private val rookPermissionsManager: RookPermissionsManager by lazy {
|
|
27
|
-
RookPermissionsManager(reactContext)
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
private val scope: CoroutineScope by lazy {
|
|
31
|
-
CoroutineScope(SupervisorJob() + Dispatchers.Main)
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
@ReactMethod
|
|
35
|
-
fun checkSamsungAvailability(promise: Promise) {
|
|
36
|
-
scope.launch {
|
|
37
|
-
rookSamsung.checkSamsungHealthAvailability().fold(
|
|
38
|
-
{ availability ->
|
|
39
|
-
when (availability) {
|
|
40
|
-
SamsungHealthAvailability.INSTALLED -> promise.resolve("INSTALLED")
|
|
41
|
-
SamsungHealthAvailability.NOT_INSTALLED -> promise.resolve("NOT_INSTALLED")
|
|
42
|
-
SamsungHealthAvailability.OUTDATED -> promise.resolve("OUTDATED")
|
|
43
|
-
SamsungHealthAvailability.DISABLED -> promise.resolve("DISABLED")
|
|
44
|
-
SamsungHealthAvailability.NOT_READY -> promise.resolve("NOT_READY")
|
|
45
|
-
}
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
promise.reject(it)
|
|
49
|
-
},
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Checks the availability of Health Connect on the device (whether it is installed, not installed, or not supported).
|
|
57
|
-
* @param promise A promise object to handle the result (resolved with the availability status or rejected on failure).
|
|
58
|
-
*/
|
|
59
|
-
@ReactMethod
|
|
60
|
-
fun checkAvailability(promise: Promise) {
|
|
61
|
-
val r = rookPermissionsManager.checkHealthConnectAvailability()
|
|
62
|
-
|
|
63
|
-
when(r) {
|
|
64
|
-
HealthConnectAvailability.INSTALLED -> promise.resolve("INSTALLED")
|
|
65
|
-
HealthConnectAvailability.NOT_INSTALLED -> promise.resolve("NOT_INSTALLED")
|
|
66
|
-
HealthConnectAvailability.NOT_SUPPORTED -> promise.resolve("NOT_SUPPORTED")
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* Opens the Health Connect settings page on the device for the user to manage permissions.
|
|
72
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
73
|
-
*/
|
|
74
|
-
@ReactMethod
|
|
75
|
-
fun openHealthConnectSettings(promise: Promise) {
|
|
76
|
-
scope.launch {
|
|
77
|
-
|
|
78
|
-
val result = rookPermissionsManager.openHealthConnectSettings()
|
|
79
|
-
|
|
80
|
-
result.fold({
|
|
81
|
-
promise.resolve(true)
|
|
82
|
-
},{
|
|
83
|
-
promise.reject(it)
|
|
84
|
-
})
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
@ReactMethod
|
|
90
|
-
fun checkSamsungHealthPermissions(promise: Promise){
|
|
91
|
-
scope.launch {
|
|
92
|
-
if (!SamsungAvailability.isSamsungAvailable(rookSamsung)){
|
|
93
|
-
promise.reject(Throwable("Samsung health is not available"))
|
|
94
|
-
return@launch
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
rookSamsung.checkSamsungHealthPermissions(SamsungHealthPermission.entries.toSet()).fold(
|
|
98
|
-
{ hasAllPermissions ->
|
|
99
|
-
promise.resolve(hasAllPermissions)
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
promise.reject(it)
|
|
103
|
-
}
|
|
104
|
-
)
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
@ReactMethod
|
|
109
|
-
fun checkSamsungHealthPermissionsPartially(promise: Promise){
|
|
110
|
-
scope.launch {
|
|
111
|
-
if (!SamsungAvailability.isSamsungAvailable(rookSamsung)){
|
|
112
|
-
promise.reject(Throwable("Samsung health is not available"))
|
|
113
|
-
return@launch
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
rookSamsung.checkSamsungHealthPermissionsPartially(SamsungHealthPermission.entries.toSet()).fold(
|
|
117
|
-
{ hasAllPermissions ->
|
|
118
|
-
promise.resolve(hasAllPermissions)
|
|
119
|
-
},
|
|
120
|
-
{
|
|
121
|
-
promise.reject(it)
|
|
122
|
-
}
|
|
123
|
-
)
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Checks the current permissions granted by Health Conect to ensure the application has the necessary access.
|
|
129
|
-
* @param promise A promise object to handle the result (resolved with permission status or rejected on failure).
|
|
130
|
-
*/
|
|
131
|
-
@ReactMethod
|
|
132
|
-
fun checkPermissions(promise: Promise) {
|
|
133
|
-
scope.launch {
|
|
134
|
-
val result = rookPermissionsManager.checkHealthConnectPermissions()
|
|
135
|
-
|
|
136
|
-
result.fold({
|
|
137
|
-
promise.resolve(it)
|
|
138
|
-
}, {
|
|
139
|
-
promise.reject(it)
|
|
140
|
-
})
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
@ReactMethod
|
|
145
|
-
fun checkHealthConnectPermissionsPartially(promise: Promise) {
|
|
146
|
-
scope.launch {
|
|
147
|
-
val result = rookPermissionsManager.checkHealthConnectPermissionsPartially()
|
|
148
|
-
|
|
149
|
-
result.fold({
|
|
150
|
-
promise.resolve(it)
|
|
151
|
-
}, {
|
|
152
|
-
promise.reject(it)
|
|
153
|
-
})
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Requests Health Connect permissions from the user if they are not already granted.
|
|
159
|
-
* @param promise A promise object to handle the result (resolved with the permission status or rejected on failure).
|
|
160
|
-
*/
|
|
161
|
-
@ReactMethod
|
|
162
|
-
fun requestAllPermissions(promise: Promise) {
|
|
163
|
-
scope.launch {
|
|
164
|
-
rookPermissionsManager.requestHealthConnectPermissions().fold({
|
|
165
|
-
when(it) {
|
|
166
|
-
RequestPermissionsStatus.REQUEST_SENT -> {
|
|
167
|
-
promise.resolve("REQUEST_SENT")
|
|
168
|
-
}
|
|
169
|
-
RequestPermissionsStatus .ALREADY_GRANTED -> {
|
|
170
|
-
promise.resolve("ALREADY_GRANTED")
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}, {
|
|
174
|
-
promise.reject(it)
|
|
175
|
-
})
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
@ReactMethod
|
|
180
|
-
fun requestSamsungPermissions(permissions: ReadableArray, promise: Promise) {
|
|
181
|
-
val shPermissions = PermissionConversion.parseSamsungPermissions(permissions)
|
|
182
|
-
|
|
183
|
-
scope.launch {
|
|
184
|
-
if (!SamsungAvailability.isSamsungAvailable(rookSamsung)) {
|
|
185
|
-
promise.reject(Throwable("Samsung Health is not available"))
|
|
186
|
-
return@launch
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
rookSamsung.requestSamsungHealthPermissions(shPermissions).fold(
|
|
190
|
-
{
|
|
191
|
-
when (it) {
|
|
192
|
-
SHRequestPermissionsStatus.ALREADY_GRANTED -> promise.resolve("ALREADY_GRANTED")
|
|
193
|
-
SHRequestPermissionsStatus.REQUEST_SENT -> promise.resolve("REQUEST_SENT")
|
|
194
|
-
}
|
|
195
|
-
},
|
|
196
|
-
{
|
|
197
|
-
promise.reject(it)
|
|
198
|
-
}
|
|
199
|
-
)
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Checks if the SDK has permissions to use background permissions
|
|
205
|
-
* */
|
|
206
|
-
@ReactMethod
|
|
207
|
-
fun hasAndroidBackgroundPermissions(promise: Promise) {
|
|
208
|
-
try {
|
|
209
|
-
val result = rookPermissionsManager.checkAndroidPermissions()
|
|
210
|
-
promise.resolve(result)
|
|
211
|
-
}
|
|
212
|
-
catch (e: Exception) {
|
|
213
|
-
promise.reject(e)
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* Requests Android permissions for step counting if they are not already granted.
|
|
219
|
-
* @param promise A promise object to handle the result (resolved with the permission status or rejected on failure).
|
|
220
|
-
*/
|
|
221
|
-
@ReactMethod
|
|
222
|
-
fun requestAndroidBackgroundPermissions(promise: Promise) {
|
|
223
|
-
try {
|
|
224
|
-
val response = rookPermissionsManager.requestAndroidPermissions()
|
|
225
|
-
|
|
226
|
-
if (response == RequestPermissionsStatus.REQUEST_SENT)
|
|
227
|
-
promise.resolve("REQUEST_SENT")
|
|
228
|
-
else promise.resolve("ALREADY_GRANTED")
|
|
229
|
-
}
|
|
230
|
-
catch (e: Exception) {
|
|
231
|
-
promise.reject(e)
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
/**
|
|
236
|
-
* Check if the SDK should request permissions to use android services
|
|
237
|
-
* to show an sticky notification
|
|
238
|
-
* */
|
|
239
|
-
@ReactMethod
|
|
240
|
-
fun shouldRequestAndroidBackgroundPermissions(promise: Promise) {
|
|
241
|
-
val activity = reactApplicationContext.currentActivity
|
|
242
|
-
|
|
243
|
-
if (activity == null) {
|
|
244
|
-
promise.reject(Exception("Error trying to request permissions"))
|
|
245
|
-
return
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
try {
|
|
249
|
-
val r = RookPermissionsManager.shouldRequestAndroidPermissions(activity)
|
|
250
|
-
promise.resolve(r)
|
|
251
|
-
}
|
|
252
|
-
catch (e: Exception) {
|
|
253
|
-
promise.reject(e)
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
@ReactMethod
|
|
258
|
-
fun revokeHealthConnectPermissions(promise: Promise) {
|
|
259
|
-
scope.launch {
|
|
260
|
-
rookPermissionsManager.revokeHealthConnectPermissions()
|
|
261
|
-
.fold({
|
|
262
|
-
promise.resolve(true)
|
|
263
|
-
}, {
|
|
264
|
-
promise.reject(it)
|
|
265
|
-
})
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
/**
|
|
270
|
-
* Checks the status of background read permissions using RookPermissionsManager.
|
|
271
|
-
*
|
|
272
|
-
* This function determines whether the app has permission to read health data in the background.
|
|
273
|
-
* The result is returned as a promise to React Native.
|
|
274
|
-
*
|
|
275
|
-
* Possible results:
|
|
276
|
-
* - "UNAVAILABLE": Background read is not available on this device.
|
|
277
|
-
* - "PERMISSION_NOT_GRANTED": The background read permission has not been granted.
|
|
278
|
-
* - "PERMISSION_GRANTED": The background read permission has been granted.
|
|
279
|
-
*
|
|
280
|
-
* If an error occurs while checking the permission status, the promise will be rejected.
|
|
281
|
-
*
|
|
282
|
-
* @param promise A React Native promise that resolves with the permission status or rejects with an error.
|
|
283
|
-
*/
|
|
284
|
-
@ReactMethod
|
|
285
|
-
fun checkBackgroundReadStatus(promise: Promise) {
|
|
286
|
-
scope.launch {
|
|
287
|
-
rookPermissionsManager.checkBackgroundReadStatus().fold(
|
|
288
|
-
{ status ->
|
|
289
|
-
when (status) {
|
|
290
|
-
BackgroundReadStatus.UNAVAILABLE -> promise.resolve("UNAVAILABLE")
|
|
291
|
-
BackgroundReadStatus.PERMISSION_NOT_GRANTED -> promise.resolve("PERMISSION_NOT_GRANTED")
|
|
292
|
-
BackgroundReadStatus.PERMISSION_GRANTED -> promise.resolve("PERMISSION_GRANTED")
|
|
293
|
-
}
|
|
294
|
-
},
|
|
295
|
-
{ throwable ->
|
|
296
|
-
promise.reject(throwable)
|
|
297
|
-
}
|
|
298
|
-
)
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
companion object {
|
|
303
|
-
const val NAME = "RookPermissionsModule"
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
override fun getName(): String {
|
|
307
|
-
return NAME
|
|
308
|
-
}
|
|
309
|
-
}
|
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
package com.rooksdk.modules
|
|
2
|
-
|
|
3
|
-
import com.facebook.react.bridge.Promise
|
|
4
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
5
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
6
|
-
import com.facebook.react.bridge.ReactMethod
|
|
7
|
-
import com.rookmotion.rook.sdk.RookStepsManager
|
|
8
|
-
import kotlinx.coroutines.CoroutineScope
|
|
9
|
-
import kotlinx.coroutines.Dispatchers
|
|
10
|
-
import kotlinx.coroutines.SupervisorJob
|
|
11
|
-
import kotlinx.coroutines.cancel
|
|
12
|
-
import kotlinx.coroutines.launch
|
|
13
|
-
|
|
14
|
-
class RookStepsModule(
|
|
15
|
-
reactContext: ReactApplicationContext
|
|
16
|
-
): ReactContextBaseJavaModule(reactContext) {
|
|
17
|
-
|
|
18
|
-
private val scope: CoroutineScope by lazy {
|
|
19
|
-
CoroutineScope(SupervisorJob() + Dispatchers.Main)
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
private val rookStepsManager: RookStepsManager by lazy {
|
|
23
|
-
RookStepsManager(reactApplicationContext)
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Checks if step count data is available on the device.
|
|
28
|
-
* @param promise A promise object to handle the result (resolved with true/false).
|
|
29
|
-
*/
|
|
30
|
-
@ReactMethod
|
|
31
|
-
fun isStepsAvailable(promise: Promise) {
|
|
32
|
-
promise.resolve(rookStepsManager.isAvailable())
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/**
|
|
36
|
-
* Enables background step counting on Android devices, allowing the app to track steps continuously.
|
|
37
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
38
|
-
*/
|
|
39
|
-
@ReactMethod
|
|
40
|
-
fun enableBackgroundAndroidSteps(promise: Promise) {
|
|
41
|
-
rookStepsManager.enableBackgroundAndroidSteps().fold({
|
|
42
|
-
promise.resolve(true)
|
|
43
|
-
}, {
|
|
44
|
-
promise.reject(it)
|
|
45
|
-
})
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Disables background step counting on Android devices.
|
|
50
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
51
|
-
*/
|
|
52
|
-
@ReactMethod
|
|
53
|
-
fun disableBackgroundAndroidSteps(promise: Promise) {
|
|
54
|
-
rookStepsManager
|
|
55
|
-
.disableBackgroundAndroidSteps()
|
|
56
|
-
.fold({
|
|
57
|
-
scope.cancel()
|
|
58
|
-
promise.resolve(true)
|
|
59
|
-
}, {
|
|
60
|
-
promise.reject(it)
|
|
61
|
-
})
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Checks whether background step tracking on Android is currently active.
|
|
66
|
-
* This method queries the Rook SDK to determine if background step counting
|
|
67
|
-
* is enabled and active on the device.
|
|
68
|
-
*
|
|
69
|
-
* @param promise A promise object that resolves with a boolean value:
|
|
70
|
-
* - true if background step tracking is active,
|
|
71
|
-
* - false otherwise.
|
|
72
|
-
*/
|
|
73
|
-
@ReactMethod
|
|
74
|
-
fun isBackgroundAndroidStepsActive(promise: Promise) {
|
|
75
|
-
scope.launch {
|
|
76
|
-
val response = rookStepsManager.isBackgroundAndroidStepsActive()
|
|
77
|
-
promise.resolve(response)
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Synchronizes the step count for the current day
|
|
83
|
-
* This method queries the Rook SDK to retrieve the number of steps counted today
|
|
84
|
-
* from the Android platform and returns the result to the React Native layer.
|
|
85
|
-
*
|
|
86
|
-
* @param promise A promise object that resolves with the step count as a string
|
|
87
|
-
* or rejects with an error if the synchronization fails.
|
|
88
|
-
*/
|
|
89
|
-
@ReactMethod
|
|
90
|
-
fun syncTodayAndroidStepsCount(promise: Promise) {
|
|
91
|
-
scope.launch {
|
|
92
|
-
rookStepsManager
|
|
93
|
-
.syncTodayAndroidStepsCount()
|
|
94
|
-
.fold({
|
|
95
|
-
promise.resolve(it.toString())
|
|
96
|
-
}, {
|
|
97
|
-
promise.reject(it)
|
|
98
|
-
})
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
override fun getName(): String {
|
|
103
|
-
return "RookStepsModule"
|
|
104
|
-
}
|
|
105
|
-
}
|