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
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2025 ROOK
|
|
4
4
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
5
|
of this software and associated documentation files (the "Software"), to deal
|
|
6
6
|
in the Software without restriction, including without limitation the rights
|
package/README.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
|
-
#
|
|
1
|
+
# react-native-rook-sdk
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Extract health data from health connect, apple health and samsung health to transform to a RookScore
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
```sh
|
|
9
|
+
npm install react-native-rook-sdk
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
## Usage
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
```js
|
|
17
|
+
import { multiply } from 'react-native-rook-sdk';
|
|
18
|
+
|
|
19
|
+
// ...
|
|
20
|
+
|
|
21
|
+
const result = multiply(3, 7);
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
## Contributing
|
|
26
|
+
|
|
27
|
+
- [Development workflow](CONTRIBUTING.md#development-workflow)
|
|
28
|
+
- [Sending a pull request](CONTRIBUTING.md#sending-a-pull-request)
|
|
29
|
+
- [Code of conduct](CODE_OF_CONDUCT.md)
|
|
30
|
+
|
|
31
|
+
## License
|
|
32
|
+
|
|
33
|
+
MIT
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
Made with [create-react-native-library](https://github.com/callstack/react-native-builder-bob)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require "json"
|
|
2
|
+
|
|
3
|
+
package = JSON.parse(File.read(File.join(__dir__, "package.json")))
|
|
4
|
+
|
|
5
|
+
Pod::Spec.new do |s|
|
|
6
|
+
s.name = "RNRookSdk"
|
|
7
|
+
s.version = package["version"]
|
|
8
|
+
s.summary = package["description"]
|
|
9
|
+
s.homepage = package["homepage"]
|
|
10
|
+
s.license = package["license"]
|
|
11
|
+
s.authors = package["author"]
|
|
12
|
+
|
|
13
|
+
s.dependency "RookSDK", "4.0.0-beta.1"
|
|
14
|
+
|
|
15
|
+
s.platforms = { :ios => min_ios_version_supported }
|
|
16
|
+
s.source = { :git => "https://docs.tryrook.io/docs/category/reactnative.git", :tag => "#{s.version}" }
|
|
17
|
+
|
|
18
|
+
s.source_files = "ios/**/*.{h,m,mm,swift,cpp}"
|
|
19
|
+
s.private_header_files = "ios/**/*.h"
|
|
20
|
+
|
|
21
|
+
install_modules_dependencies(s)
|
|
22
|
+
end
|
package/android/build.gradle
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
buildscript {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
ext.getExtOrDefault = {name ->
|
|
3
|
+
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['RNRookSdk_' + name]
|
|
4
|
+
}
|
|
4
5
|
|
|
5
6
|
repositories {
|
|
6
7
|
google()
|
|
@@ -8,57 +9,34 @@ buildscript {
|
|
|
8
9
|
}
|
|
9
10
|
|
|
10
11
|
dependencies {
|
|
11
|
-
classpath "com.android.tools.build:gradle:7.2
|
|
12
|
+
classpath "com.android.tools.build:gradle:8.7.2"
|
|
12
13
|
// noinspection DifferentKotlinGradleVersion
|
|
13
|
-
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$
|
|
14
|
+
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:${getExtOrDefault('kotlinVersion')}"
|
|
14
15
|
}
|
|
15
16
|
}
|
|
16
17
|
|
|
17
|
-
def isNewArchitectureEnabled() {
|
|
18
|
-
return rootProject.hasProperty("newArchEnabled") && rootProject.getProperty("newArchEnabled") == "true"
|
|
19
|
-
}
|
|
20
18
|
|
|
21
19
|
apply plugin: "com.android.library"
|
|
22
20
|
apply plugin: "kotlin-android"
|
|
23
21
|
|
|
24
|
-
|
|
25
|
-
apply plugin: "com.facebook.react"
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
def getExtOrDefault(name) {
|
|
29
|
-
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties["RookSdk_" + name]
|
|
30
|
-
}
|
|
22
|
+
apply plugin: "com.facebook.react"
|
|
31
23
|
|
|
32
24
|
def getExtOrIntegerDefault(name) {
|
|
33
25
|
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["RookSdk_" + name]).toInteger()
|
|
34
26
|
}
|
|
35
27
|
|
|
36
|
-
def supportsNamespace() {
|
|
37
|
-
def parsed = com.android.Version.ANDROID_GRADLE_PLUGIN_VERSION.tokenize('.')
|
|
38
|
-
def major = parsed[0].toInteger()
|
|
39
|
-
def minor = parsed[1].toInteger()
|
|
40
|
-
|
|
41
|
-
// Namespace support was added in 7.3.0
|
|
42
|
-
return (major == 7 && minor >= 3) || major >= 8
|
|
43
|
-
}
|
|
44
|
-
|
|
45
28
|
android {
|
|
46
|
-
|
|
47
|
-
namespace "com.rooksdk"
|
|
48
|
-
|
|
49
|
-
sourceSets {
|
|
50
|
-
main {
|
|
51
|
-
manifest.srcFile "src/main/AndroidManifestNew.xml"
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
29
|
+
namespace "com.rooksdk"
|
|
55
30
|
|
|
56
31
|
compileSdkVersion getExtOrIntegerDefault("compileSdkVersion")
|
|
57
32
|
|
|
58
33
|
defaultConfig {
|
|
59
34
|
minSdkVersion getExtOrIntegerDefault("minSdkVersion")
|
|
60
35
|
targetSdkVersion getExtOrIntegerDefault("targetSdkVersion")
|
|
36
|
+
}
|
|
61
37
|
|
|
38
|
+
buildFeatures {
|
|
39
|
+
buildConfig true
|
|
62
40
|
}
|
|
63
41
|
|
|
64
42
|
buildTypes {
|
|
@@ -75,6 +53,15 @@ android {
|
|
|
75
53
|
sourceCompatibility JavaVersion.VERSION_1_8
|
|
76
54
|
targetCompatibility JavaVersion.VERSION_1_8
|
|
77
55
|
}
|
|
56
|
+
|
|
57
|
+
sourceSets {
|
|
58
|
+
main {
|
|
59
|
+
java.srcDirs += [
|
|
60
|
+
"generated/java",
|
|
61
|
+
"generated/jni"
|
|
62
|
+
]
|
|
63
|
+
}
|
|
64
|
+
}
|
|
78
65
|
}
|
|
79
66
|
|
|
80
67
|
repositories {
|
|
@@ -85,14 +72,6 @@ repositories {
|
|
|
85
72
|
def kotlin_version = getExtOrDefault("kotlinVersion")
|
|
86
73
|
|
|
87
74
|
dependencies {
|
|
88
|
-
|
|
89
|
-
// For > 0.71, this will be replaced by `com.facebook.react:react-android:$version` by react gradle plugin
|
|
90
|
-
//noinspection GradleDynamicVersion
|
|
91
|
-
implementation "com.facebook.react:react-native:+"
|
|
75
|
+
implementation "com.facebook.react:react-android"
|
|
92
76
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
93
|
-
implementation 'com.google.code.gson:gson:2.13.0'
|
|
94
|
-
|
|
95
|
-
implementation("io.tryrook.android:rook-sdk-samsung:1.1.0")
|
|
96
|
-
implementation 'com.rookmotion.android:rook-sdk:2.4.0'
|
|
97
77
|
}
|
|
98
|
-
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
RookSdk_kotlinVersion=
|
|
2
|
-
RookSdk_minSdkVersion=
|
|
3
|
-
RookSdk_targetSdkVersion=
|
|
4
|
-
RookSdk_compileSdkVersion=
|
|
5
|
-
|
|
1
|
+
RookSdk_kotlinVersion=2.0.21
|
|
2
|
+
RookSdk_minSdkVersion=24
|
|
3
|
+
RookSdk_targetSdkVersion=34
|
|
4
|
+
RookSdk_compileSdkVersion=35
|
|
5
|
+
RookSdk_ndkVersion=27.1.12297006
|
|
@@ -1,239 +1,28 @@
|
|
|
1
1
|
package com.rooksdk
|
|
2
2
|
|
|
3
|
-
import android.content.IntentFilter
|
|
4
|
-
import android.util.Log
|
|
5
|
-
import androidx.core.content.ContextCompat
|
|
6
3
|
import com.facebook.react.bridge.Promise
|
|
7
4
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
8
|
-
import com.facebook.react.
|
|
9
|
-
import com.facebook.react.bridge.ReactMethod
|
|
10
|
-
import com.facebook.react.bridge.ReadableMap
|
|
11
|
-
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
12
|
-
import com.rookmotion.rook.sdk.RookConfigurationManager
|
|
13
|
-
import com.rookmotion.rook.sdk.RookPermissionsManager
|
|
14
|
-
import com.rookmotion.rook.sdk.domain.analytics.HCRookAnalytics
|
|
15
|
-
import com.rookmotion.rook.sdk.domain.analytics.HCRookFramework
|
|
16
|
-
import com.rookmotion.rook.sdk.domain.environment.RookEnvironment
|
|
17
|
-
import com.rookmotion.rook.sdk.domain.model.RookConfiguration
|
|
18
|
-
import com.rooksdk.broadcasts.AndroidPermissionsReceiverTransmitter
|
|
19
|
-
import com.rooksdk.broadcasts.HealthConnectPermissionsReceiverTransmitter
|
|
20
|
-
import com.rooksdk.broadcasts.SamsungHealthPermissionsReceiverTransmitter
|
|
21
|
-
import com.rooksdk.utils.ReadableToWritable
|
|
22
|
-
import com.rooksdk.utils.SamsungAvailability
|
|
23
|
-
import io.tryrook.sdk.samsung.RookSamsung
|
|
24
|
-
import io.tryrook.sdk.samsung.domain.analytics.SHRookAnalytics
|
|
25
|
-
import io.tryrook.sdk.samsung.domain.analytics.SHRookFramework
|
|
26
|
-
import io.tryrook.sdk.samsung.domain.enums.SamsungHealthAvailability
|
|
27
|
-
import io.tryrook.sdk.samsung.domain.enums.SamsungHealthPermission
|
|
28
|
-
import io.tryrook.sdk.samsung.domain.environment.SHEnvironment
|
|
29
|
-
import io.tryrook.sdk.samsung.domain.model.SHConfiguration
|
|
30
|
-
import kotlinx.coroutines.CoroutineScope
|
|
31
|
-
import kotlinx.coroutines.Dispatchers
|
|
32
|
-
import kotlinx.coroutines.SupervisorJob
|
|
33
|
-
import kotlinx.coroutines.cancel
|
|
34
|
-
import kotlinx.coroutines.launch
|
|
5
|
+
import com.facebook.react.module.annotations.ReactModule
|
|
35
6
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
* It provides methods for initializing the SDK, handling user configuration, syncing
|
|
40
|
-
* health data, and managing permissions.
|
|
41
|
-
*
|
|
42
|
-
* Main Responsibilities:
|
|
43
|
-
* - Initialize and configure the Rook SDK.
|
|
44
|
-
* - Manage user-related information such as user ID.
|
|
45
|
-
* - Sync health-related summaries and events (e.g., sleep, body metrics, physical activities).
|
|
46
|
-
* - Handle Health Connect permissions and check availability.
|
|
47
|
-
* - Transmit permission changes through Android and Health Connect.
|
|
48
|
-
* - Provide the ability to listen to permission changes using Android broadcast receivers.
|
|
49
|
-
* - Expose methods to JavaScript for requesting or syncing data.
|
|
50
|
-
*
|
|
51
|
-
* Key Components:
|
|
52
|
-
* - `RookConfigurationManager`: Manages configuration settings for the SDK.
|
|
53
|
-
* - `RookSummaryManager`: Handles syncing health data summaries (e.g., sleep, physical, body).
|
|
54
|
-
* - `RookEventManager`: Manages the synchronization of health-related events (e.g., physical activities, blood pressure, etc.).
|
|
55
|
-
* - `RookPermissionsManager`: Handles permission management and availability checks for Health Connect.
|
|
56
|
-
* - `RookStepsManager`: Manages steps data synchronization.
|
|
57
|
-
* - `CoroutineScope`: Used to launch asynchronous operations.
|
|
58
|
-
*/
|
|
59
|
-
class RookSdkModule(
|
|
60
|
-
reactContext: ReactApplicationContext,
|
|
61
|
-
private val rookConfigurationManager: RookConfigurationManager,
|
|
62
|
-
private val rookSamsung: RookSamsung
|
|
63
|
-
): ReactContextBaseJavaModule(reactContext) {
|
|
64
|
-
|
|
65
|
-
private var scope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.Main)
|
|
66
|
-
private var listenerCount = 0
|
|
67
|
-
|
|
68
|
-
private val stepsScope: CoroutineScope by lazy {
|
|
69
|
-
CoroutineScope(SupervisorJob() + Dispatchers.Main)
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
private val androidPermissionsReceiverTransmitter: AndroidPermissionsReceiverTransmitter by lazy {
|
|
73
|
-
AndroidPermissionsReceiverTransmitter()
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
private val hcPermissionsReceiverTransmitter: HealthConnectPermissionsReceiverTransmitter by lazy {
|
|
77
|
-
HealthConnectPermissionsReceiverTransmitter()
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
private val shHealthPermissionsReceiverTransmitter: SamsungHealthPermissionsReceiverTransmitter by lazy {
|
|
81
|
-
SamsungHealthPermissionsReceiverTransmitter()
|
|
82
|
-
}
|
|
7
|
+
@ReactModule(name = RookSdkModule.NAME)
|
|
8
|
+
class RookSdkModule(reactContext: ReactApplicationContext) :
|
|
9
|
+
NativeRookSdkSpec(reactContext) {
|
|
83
10
|
|
|
84
11
|
override fun getName(): String {
|
|
85
12
|
return NAME
|
|
86
13
|
}
|
|
87
14
|
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
hcPermissionsReceiverTransmitter.setReactApplicationContext(reactApplicationContext)
|
|
93
|
-
shHealthPermissionsReceiverTransmitter.setReactApplicationContext(reactApplicationContext)
|
|
94
|
-
|
|
95
|
-
ContextCompat.registerReceiver(
|
|
96
|
-
reactApplicationContext,
|
|
97
|
-
androidPermissionsReceiverTransmitter,
|
|
98
|
-
IntentFilter(RookPermissionsManager.ACTION_ANDROID_PERMISSIONS),
|
|
99
|
-
ContextCompat.RECEIVER_EXPORTED
|
|
100
|
-
)
|
|
101
|
-
|
|
102
|
-
ContextCompat.registerReceiver(
|
|
103
|
-
reactApplicationContext,
|
|
104
|
-
hcPermissionsReceiverTransmitter,
|
|
105
|
-
IntentFilter(RookPermissionsManager.ACTION_HEALTH_CONNECT_PERMISSIONS),
|
|
106
|
-
ContextCompat.RECEIVER_EXPORTED,
|
|
107
|
-
)
|
|
108
|
-
|
|
109
|
-
ContextCompat.registerReceiver(
|
|
110
|
-
reactApplicationContext,
|
|
111
|
-
shHealthPermissionsReceiverTransmitter,
|
|
112
|
-
IntentFilter(SamsungHealthPermission.ACTION_SAMSUNG_HEALTH_PERMISSIONS),
|
|
113
|
-
ContextCompat.RECEIVER_EXPORTED
|
|
114
|
-
)
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
listenerCount += 1
|
|
15
|
+
// Example method
|
|
16
|
+
// See https://reactnative.dev/docs/native-modules-android
|
|
17
|
+
override fun multiply(a: Double, b: Double): Double {
|
|
18
|
+
return a * b
|
|
118
19
|
}
|
|
119
20
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
listenerCount -= count
|
|
123
|
-
if (listenerCount == 0) {
|
|
124
|
-
stepsScope.cancel()
|
|
125
|
-
|
|
126
|
-
reactApplicationContext.unregisterReceiver(hcPermissionsReceiverTransmitter)
|
|
127
|
-
reactApplicationContext.unregisterReceiver(androidPermissionsReceiverTransmitter)
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Initializes the Rook SDK with the specified configuration settings (environment, clientUUID, secretKey).
|
|
133
|
-
* This is required before any data synchronization or user management can occur.
|
|
134
|
-
* @param config A map containing the environment, clientUUID, secretKey, and other settings.
|
|
135
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
136
|
-
*/
|
|
137
|
-
@ReactMethod
|
|
138
|
-
fun initRook(config: ReadableMap,promise: Promise) {
|
|
139
|
-
try {
|
|
140
|
-
val clientUUID = config.getString("clientUUID")?.trim() ?: ""
|
|
141
|
-
val secretKey = config.getString("password")?.trim() ?: ""
|
|
142
|
-
|
|
143
|
-
if (clientUUID.isBlank() || secretKey.isBlank()) {
|
|
144
|
-
promise.reject("Invalid Credentials", "Invalid credentials")
|
|
145
|
-
return
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
var environment = RookEnvironment.SANDBOX
|
|
149
|
-
var shEnv = SHEnvironment.SANDBOX
|
|
150
|
-
|
|
151
|
-
if (config.getString("environment") == "production") {
|
|
152
|
-
environment = RookEnvironment.PRODUCTION
|
|
153
|
-
shEnv = SHEnvironment.SANDBOX
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
val rookConfiguration = RookConfiguration(
|
|
157
|
-
environment = environment,
|
|
158
|
-
clientUUID = clientUUID,
|
|
159
|
-
secretKey = secretKey
|
|
160
|
-
)
|
|
161
|
-
|
|
162
|
-
val shConfig = SHConfiguration(
|
|
163
|
-
environment = shEnv,
|
|
164
|
-
clientUUID = clientUUID,
|
|
165
|
-
secretKey = secretKey
|
|
166
|
-
)
|
|
167
|
-
|
|
168
|
-
val enableLogs = config.getBoolean("enableLogs")
|
|
169
|
-
if(enableLogs) {
|
|
170
|
-
rookConfigurationManager.enableLocalLogs()
|
|
171
|
-
rookSamsung.enableLocalLogs()
|
|
172
|
-
}
|
|
173
|
-
|
|
174
|
-
rookConfigurationManager.setConfiguration(rookConfiguration)
|
|
175
|
-
|
|
176
|
-
HCRookAnalytics.setFramework(HCRookFramework.REACT_NATIVE)
|
|
177
|
-
SHRookAnalytics.setFramework(SHRookFramework.REACT_NATIVE)
|
|
178
|
-
|
|
179
|
-
scope.launch {
|
|
180
|
-
try {
|
|
181
|
-
val result = rookConfigurationManager.initRook()
|
|
182
|
-
result.getOrThrow()
|
|
183
|
-
|
|
184
|
-
val availableResult = SamsungAvailability.getSamsungHealthAvailabilityOrDefault(rookSamsung)
|
|
185
|
-
|
|
186
|
-
if (availableResult == SamsungHealthAvailability.INSTALLED) {
|
|
187
|
-
rookSamsung.initRook(shConfig)
|
|
188
|
-
tryToSetSamsungUserId()
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
promise.resolve(true)
|
|
192
|
-
} catch (e: Throwable) {
|
|
193
|
-
promise.reject(e)
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
catch (e: Exception) {
|
|
198
|
-
promise.reject(e)
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
private fun tryToSetSamsungUserId() {
|
|
204
|
-
scope.launch {
|
|
205
|
-
val result = rookConfigurationManager.getUserID()
|
|
206
|
-
|
|
207
|
-
if (result != null) {
|
|
208
|
-
val user = rookSamsung.updateUserID(result)
|
|
209
|
-
user.getOrNull()
|
|
210
|
-
}
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
/**
|
|
215
|
-
* Sends a broadcast message to the React Native layer.
|
|
216
|
-
* This method emits a message event to the React Native side via the
|
|
217
|
-
* `ROOK_NOTIFICATION` channel, allowing communication from the native module.
|
|
218
|
-
*
|
|
219
|
-
* @param message A ReadableMap containing the message data to send.
|
|
220
|
-
* @param promise A promise object that resolves with true if the message was sent successfully.
|
|
221
|
-
*/
|
|
222
|
-
@ReactMethod
|
|
223
|
-
fun sendMessageToBroadcast(message: ReadableMap, promise: Promise) {
|
|
224
|
-
if (listenerCount <= 0) return
|
|
225
|
-
|
|
226
|
-
val hash = ReadableToWritable.readableMapToHashMap(message)
|
|
227
|
-
val writable = ReadableToWritable.hashMapToWritableMap(hash)
|
|
228
|
-
|
|
229
|
-
reactApplicationContext
|
|
230
|
-
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
231
|
-
.emit("ROOK_NOTIFICATION", writable)
|
|
232
|
-
|
|
233
|
-
promise.resolve(true)
|
|
21
|
+
override fun simplePromise(promise: Promise?) {
|
|
22
|
+
TODO("Not yet implemented")
|
|
234
23
|
}
|
|
235
24
|
|
|
236
25
|
companion object {
|
|
237
|
-
const val NAME = "
|
|
26
|
+
const val NAME = "RNRookSdk"
|
|
238
27
|
}
|
|
239
28
|
}
|
|
@@ -1,42 +1,33 @@
|
|
|
1
1
|
package com.rooksdk
|
|
2
2
|
|
|
3
|
-
import
|
|
4
|
-
import com.facebook.react.ReactPackage
|
|
3
|
+
import com.facebook.react.BaseReactPackage
|
|
5
4
|
import com.facebook.react.bridge.NativeModule
|
|
6
5
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
7
|
-
import com.facebook.react.
|
|
8
|
-
import com.
|
|
9
|
-
import
|
|
10
|
-
import com.rooksdk.modules.RookConfigurationModule
|
|
11
|
-
import com.rooksdk.modules.RookLocalData
|
|
12
|
-
import com.rooksdk.modules.RookPermissionsModule
|
|
13
|
-
import com.rooksdk.modules.RookStepsModule
|
|
14
|
-
import io.tryrook.sdk.samsung.RookSamsung
|
|
6
|
+
import com.facebook.react.module.model.ReactModuleInfo
|
|
7
|
+
import com.facebook.react.module.model.ReactModuleInfoProvider
|
|
8
|
+
import java.util.HashMap
|
|
15
9
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
rookConfigurationManager = RookConfigurationManager(reactContext)
|
|
24
|
-
|
|
25
|
-
if (rookSamsung == null)
|
|
26
|
-
rookSamsung = RookSamsung(reactContext)
|
|
27
|
-
|
|
28
|
-
return listOf(
|
|
29
|
-
RookSdkModule(reactContext, rookConfigurationManager!!, rookSamsung!!),
|
|
30
|
-
RookPermissionsModule(reactContext, rookSamsung!!),
|
|
31
|
-
RookConfigurationModule(reactContext, rookConfigurationManager!!, rookSamsung!!),
|
|
32
|
-
RookSyncModule(reactContext, rookSamsung!!),
|
|
33
|
-
RookBackgroundSyncModule(reactContext),
|
|
34
|
-
RookStepsModule(reactContext),
|
|
35
|
-
RookLocalData(reactContext, rookSamsung!!)
|
|
36
|
-
)
|
|
10
|
+
class RookSdkPackage : BaseReactPackage() {
|
|
11
|
+
override fun getModule(name: String, reactContext: ReactApplicationContext): NativeModule? {
|
|
12
|
+
return if (name == RookSdkModule.NAME) {
|
|
13
|
+
RookSdkModule(reactContext)
|
|
14
|
+
} else {
|
|
15
|
+
null
|
|
16
|
+
}
|
|
37
17
|
}
|
|
38
18
|
|
|
39
|
-
override fun
|
|
40
|
-
return
|
|
19
|
+
override fun getReactModuleInfoProvider(): ReactModuleInfoProvider {
|
|
20
|
+
return ReactModuleInfoProvider {
|
|
21
|
+
val moduleInfos: MutableMap<String, ReactModuleInfo> = HashMap()
|
|
22
|
+
moduleInfos[RookSdkModule.NAME] = ReactModuleInfo(
|
|
23
|
+
RookSdkModule.NAME,
|
|
24
|
+
RookSdkModule.NAME,
|
|
25
|
+
canOverrideExistingModule = false, // canOverrideExistingModule
|
|
26
|
+
needsEagerInit = false, // needsEagerInit
|
|
27
|
+
isCxxModule = false, // isCxxModule
|
|
28
|
+
isTurboModule = true // isTurboModule
|
|
29
|
+
)
|
|
30
|
+
moduleInfos
|
|
31
|
+
}
|
|
41
32
|
}
|
|
42
33
|
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
//
|
|
2
|
+
// File.swift
|
|
3
|
+
// RNRookSdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Javier Villanueva on 18/12/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
import Foundation
|
|
9
|
+
|
|
10
|
+
protocol DateHelperProtocol {
|
|
11
|
+
func getDateFromString(stringDate: String) -> Date?
|
|
12
|
+
func getISO8601StringDate(date: Date, timeZone: TimeZone) -> String
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
struct DateHelper: DateHelperProtocol {
|
|
16
|
+
|
|
17
|
+
private static let dateISOFormatterDateLocal: DateFormatter = {
|
|
18
|
+
let dateFormatter = DateFormatter()
|
|
19
|
+
dateFormatter.locale = Locale(identifier: Locale.preferredLanguages[0])
|
|
20
|
+
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS"
|
|
21
|
+
return dateFormatter
|
|
22
|
+
}()
|
|
23
|
+
|
|
24
|
+
private let dateIonicFormatterDate: DateFormatter = {
|
|
25
|
+
let dateFormatter = DateFormatter()
|
|
26
|
+
dateFormatter.locale = Locale(identifier: Locale.preferredLanguages[0])
|
|
27
|
+
dateFormatter.dateFormat = "yyyy-MM-dd"
|
|
28
|
+
return dateFormatter
|
|
29
|
+
}()
|
|
30
|
+
|
|
31
|
+
func getDateFromString(stringDate: String) -> Date? {
|
|
32
|
+
return dateIonicFormatterDate.date(from: stringDate)
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
func getISO8601StringDate(date: Date, timeZone: TimeZone = .current) -> String {
|
|
36
|
+
let dateFormat = DateHelper.dateISOFormatterDateLocal
|
|
37
|
+
dateFormat.timeZone = timeZone
|
|
38
|
+
let dateString: String = dateFormat.string(from: date)
|
|
39
|
+
let timeZoneHours: Int = offsetInHours(timeZone: timeZone)
|
|
40
|
+
let timeHoursString: String = String(format: "%02d", abs(timeZoneHours))
|
|
41
|
+
let stringMinutes: String = String(format: "%02d", abs(minutes(timeZone: timeZone)))
|
|
42
|
+
let toReturn: String = "\(dateString)\(timeZoneHours >= 0 ? "+" : "-")\(timeHoursString):\(stringMinutes)"
|
|
43
|
+
return toReturn
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
private func offsetInHours(timeZone: TimeZone = .current) -> Int {
|
|
47
|
+
let hours = (timeZone.secondsFromGMT()) / (3600)
|
|
48
|
+
return hours
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private func minutes(timeZone: TimeZone = TimeZone.current) -> Int {
|
|
52
|
+
let minutes = abs((timeZone.secondsFromGMT() % 3600) / 60)
|
|
53
|
+
return minutes
|
|
54
|
+
}
|
|
55
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Encodable.swift
|
|
3
|
+
// RNRookSdk
|
|
4
|
+
//
|
|
5
|
+
// Created by Javier Villanueva on 17/12/25.
|
|
6
|
+
//
|
|
7
|
+
|
|
8
|
+
extension Encodable {
|
|
9
|
+
func toDictionary() -> [String: Any] {
|
|
10
|
+
let encoder = JSONEncoder()
|
|
11
|
+
|
|
12
|
+
let dateFormatter = DateFormatter()
|
|
13
|
+
dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ssZ"
|
|
14
|
+
|
|
15
|
+
encoder.dateEncodingStrategy = .formatted(dateFormatter)
|
|
16
|
+
|
|
17
|
+
guard let data = try? encoder.encode(self),
|
|
18
|
+
let dictionary = try? JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: Any]
|
|
19
|
+
else {
|
|
20
|
+
return [:]
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return dictionary
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
//
|
|
2
2
|
// EncodableDataSource.swift
|
|
3
|
-
//
|
|
3
|
+
// RNRookSdk
|
|
4
4
|
//
|
|
5
|
-
// Created by Javier Villanueva on
|
|
5
|
+
// Created by Javier Villanueva on 17/12/25.
|
|
6
6
|
//
|
|
7
7
|
|
|
8
|
-
import Foundation
|
|
9
8
|
import RookSDK
|
|
10
9
|
|
|
11
10
|
struct EncodableDataSource: Encodable {
|
|
@@ -25,8 +24,8 @@ struct EncodableDataSource: Encodable {
|
|
|
25
24
|
func encode(to encoder: Encoder) throws {
|
|
26
25
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
27
26
|
|
|
28
|
-
try container.encode(dataSource.
|
|
29
|
-
try container.encode(dataSource.
|
|
30
|
-
try container.encode(dataSource.
|
|
27
|
+
try container.encode(dataSource.name, forKey: .name)
|
|
28
|
+
try container.encode(dataSource.authorized, forKey: .authorized)
|
|
29
|
+
try container.encode(dataSource.imageUrl, forKey: .imageUrl)
|
|
31
30
|
}
|
|
32
31
|
}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
//
|
|
2
2
|
// EncodableDataSourceAuthorizer.swift
|
|
3
|
-
//
|
|
3
|
+
// RNRookSdk
|
|
4
4
|
//
|
|
5
|
-
// Created by Javier Villanueva on
|
|
5
|
+
// Created by Javier Villanueva on 17/12/25.
|
|
6
6
|
//
|
|
7
|
-
|
|
8
7
|
import RookSDK
|
|
9
8
|
import Foundation
|
|
10
9
|
|
|
@@ -27,6 +26,6 @@ struct EncodableDataSourceAuthorizer: Encodable {
|
|
|
27
26
|
|
|
28
27
|
try container.encode(authorizer.dataSource, forKey: .dataSource)
|
|
29
28
|
try container.encode(authorizer.authorized, forKey: .authorized)
|
|
30
|
-
try container.encode(authorizer.
|
|
29
|
+
try container.encode(authorizer.authorizationUrl, forKey: .authorizationUrl)
|
|
31
30
|
}
|
|
32
31
|
}
|