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.
Files changed (335) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +35 -3
  3. package/RNRookSdk.podspec +22 -0
  4. package/android/build.gradle +20 -41
  5. package/android/gradle.properties +5 -5
  6. package/android/src/main/AndroidManifest.xml +1 -2
  7. package/android/src/main/java/com/rooksdk/RookSdkModule.kt +11 -222
  8. package/android/src/main/java/com/rooksdk/RookSdkPackage.kt +24 -33
  9. package/ios/DateHelper.swift +55 -0
  10. package/ios/Encodable.swift +25 -0
  11. package/ios/EncodableDataSource.swift +5 -6
  12. package/ios/EncodableDataSourceAuthorizer.swift +3 -4
  13. package/ios/HearRateMapper.swift +42 -0
  14. package/ios/RookBackground.swift +35 -0
  15. package/ios/RookConfiguration.swift +116 -0
  16. package/ios/RookData.swift +170 -0
  17. package/ios/RookEntry.swift +61 -0
  18. package/ios/RookPermissions.swift +78 -0
  19. package/ios/RookSdk-Bridging-Header.h +12 -0
  20. package/ios/RookSdk.h +14 -2
  21. package/ios/RookSdk.mm +549 -81
  22. package/ios/RookSources.swift +74 -116
  23. package/ios/RookSync.swift +126 -34
  24. package/ios/boost-boost_privacy-Bridging-Header.h +4 -0
  25. package/lib/module/NativeRookSdk.js +96 -0
  26. package/lib/module/NativeRookSdk.js.map +1 -0
  27. package/lib/module/context/RookSyncGateContext.js +2 -0
  28. package/lib/module/context/RookSyncGateContext.js.map +1 -1
  29. package/lib/module/context/RookSyncGateProvider.js +16 -15
  30. package/lib/module/context/RookSyncGateProvider.js.map +1 -1
  31. package/lib/module/context/RookSyncGateReducer.js +2 -0
  32. package/lib/module/context/RookSyncGateReducer.js.map +1 -1
  33. package/lib/module/context/RookSyncGateTypes.js +2 -0
  34. package/lib/module/hooks/useRookAPISources.js +66 -0
  35. package/lib/module/hooks/useRookAPISources.js.map +1 -0
  36. package/lib/module/hooks/useRookAndroidBackgroundSteps.js +12 -25
  37. package/lib/module/hooks/useRookAndroidBackgroundSteps.js.map +1 -1
  38. package/lib/module/hooks/useRookAppleHealth.js +11 -23
  39. package/lib/module/hooks/useRookAppleHealth.js.map +1 -1
  40. package/lib/module/hooks/useRookConfiguration.js +10 -109
  41. package/lib/module/hooks/useRookConfiguration.js.map +1 -1
  42. package/lib/module/hooks/useRookData.js +35 -33
  43. package/lib/module/hooks/useRookData.js.map +1 -1
  44. package/lib/module/hooks/useRookHealthConnect.js +9 -10
  45. package/lib/module/hooks/useRookHealthConnect.js.map +1 -1
  46. package/lib/module/hooks/useRookPermissions.js +39 -77
  47. package/lib/module/hooks/useRookPermissions.js.map +1 -1
  48. package/lib/module/hooks/useRookSamsungHealth.js +35 -0
  49. package/lib/module/hooks/useRookSamsungHealth.js.map +1 -0
  50. package/lib/module/hooks/useRookSync.js +23 -31
  51. package/lib/module/hooks/useRookSync.js.map +1 -1
  52. package/lib/module/hooks/useRookVariables.js +24 -18
  53. package/lib/module/hooks/useRookVariables.js.map +1 -1
  54. package/lib/module/index.js +18 -5
  55. package/lib/module/index.js.map +1 -1
  56. package/lib/module/modules/hook/useRookAutoSync.js +22 -36
  57. package/lib/module/modules/hook/useRookAutoSync.js.map +1 -1
  58. package/lib/module/modules/types/sendMessageBroadcast.js +1 -1
  59. package/lib/module/modules/utils/errors.js +2 -0
  60. package/lib/module/modules/utils/errors.js.map +1 -1
  61. package/lib/module/package.json +1 -0
  62. package/lib/module/types/ActivityEvent.js +2 -0
  63. package/lib/module/types/AppleHealthPermissions.js +53 -0
  64. package/lib/module/types/AppleHealthPermissions.js.map +1 -0
  65. package/lib/module/types/AuthorizedSources.js +2 -0
  66. package/lib/module/types/BodySummary.js +2 -0
  67. package/lib/module/types/DataSource.js +10 -0
  68. package/lib/module/types/DataSource.js.map +1 -1
  69. package/lib/module/types/HeartRateEvent.js +2 -0
  70. package/lib/{commonjs/types/DataSource.js.map → module/types/HeartRateEvent.js.map} +1 -1
  71. package/lib/module/types/PermissionsType.js +1 -1
  72. package/lib/module/types/PhysicalSummary.js +2 -0
  73. package/lib/module/types/Rook.js +2 -0
  74. package/lib/{commonjs/types/SyncTypes.js.map → module/types/Rook.js.map} +1 -1
  75. package/lib/module/types/SDKSources.js +2 -0
  76. package/lib/module/types/SDKSources.js.map +1 -1
  77. package/lib/module/types/SamsungHealthPermissions.js +3 -0
  78. package/lib/module/types/SamsungHealthPermissions.js.map +1 -1
  79. package/lib/module/types/SleepSummary.js +2 -0
  80. package/lib/module/types/SummaryTypes.js +1 -1
  81. package/lib/module/types/SyncTypes.js +28 -1
  82. package/lib/module/types/SyncTypes.js.map +1 -1
  83. package/lib/module/utils/isModuleReady.js +2 -0
  84. package/lib/module/utils/isModuleReady.js.map +1 -1
  85. package/lib/module/utils/isRunningOnAndroid.js +2 -0
  86. package/lib/module/utils/isRunningOnAndroid.js.map +1 -1
  87. package/lib/module/utils/isRunningOniOS.js +2 -0
  88. package/lib/module/utils/isRunningOniOS.js.map +1 -1
  89. package/lib/module/utils/isValidDate.js +2 -0
  90. package/lib/module/utils/isValidDate.js.map +1 -1
  91. package/lib/typescript/package.json +1 -0
  92. package/lib/typescript/src/NativeRookSdk.d.ts +190 -0
  93. package/lib/typescript/src/NativeRookSdk.d.ts.map +1 -0
  94. package/lib/typescript/src/context/RookSyncGateContext.d.ts.map +1 -1
  95. package/lib/typescript/src/context/RookSyncGateProvider.d.ts.map +1 -1
  96. package/lib/typescript/src/context/RookSyncGateReducer.d.ts.map +1 -1
  97. package/lib/typescript/src/hooks/useRookAPISources.d.ts +15 -0
  98. package/lib/typescript/src/hooks/useRookAPISources.d.ts.map +1 -0
  99. package/lib/typescript/src/hooks/useRookAndroidBackgroundSteps.d.ts +0 -1
  100. package/lib/typescript/src/hooks/useRookAndroidBackgroundSteps.d.ts.map +1 -1
  101. package/lib/typescript/src/hooks/useRookAppleHealth.d.ts +1 -2
  102. package/lib/typescript/src/hooks/useRookAppleHealth.d.ts.map +1 -1
  103. package/lib/typescript/src/hooks/useRookConfiguration.d.ts +0 -8
  104. package/lib/typescript/src/hooks/useRookConfiguration.d.ts.map +1 -1
  105. package/lib/typescript/src/hooks/useRookData.d.ts +2 -0
  106. package/lib/typescript/src/hooks/useRookData.d.ts.map +1 -1
  107. package/lib/typescript/src/hooks/useRookHealthConnect.d.ts.map +1 -1
  108. package/lib/typescript/src/hooks/useRookPermissions.d.ts +11 -12
  109. package/lib/typescript/src/hooks/useRookPermissions.d.ts.map +1 -1
  110. package/lib/typescript/src/hooks/useRookSamsungHealth.d.ts +7 -0
  111. package/lib/typescript/src/hooks/useRookSamsungHealth.d.ts.map +1 -0
  112. package/lib/typescript/src/hooks/useRookSync.d.ts.map +1 -1
  113. package/lib/typescript/src/hooks/useRookVariables.d.ts.map +1 -1
  114. package/lib/typescript/src/index.d.ts +19 -4
  115. package/lib/typescript/src/index.d.ts.map +1 -1
  116. package/lib/typescript/src/modules/hook/useRookAutoSync.d.ts.map +1 -1
  117. package/lib/typescript/src/types/AppleHealthPermissions.d.ts +50 -0
  118. package/lib/typescript/src/types/AppleHealthPermissions.d.ts.map +1 -0
  119. package/lib/typescript/src/types/AuthorizedSources.d.ts +3 -3
  120. package/lib/typescript/src/types/AuthorizedSources.d.ts.map +1 -1
  121. package/lib/typescript/src/types/DataSource.d.ts +8 -1
  122. package/lib/typescript/src/types/DataSource.d.ts.map +1 -1
  123. package/lib/typescript/src/types/HeartRateEvent.d.ts +24 -0
  124. package/lib/typescript/src/types/HeartRateEvent.d.ts.map +1 -0
  125. package/lib/typescript/src/types/PermissionsType.d.ts +0 -4
  126. package/lib/typescript/src/types/PermissionsType.d.ts.map +1 -1
  127. package/lib/typescript/src/types/Rook.d.ts +9 -0
  128. package/lib/typescript/src/types/Rook.d.ts.map +1 -0
  129. package/lib/typescript/src/types/SamsungHealthPermissions.d.ts +1 -0
  130. package/lib/typescript/src/types/SamsungHealthPermissions.d.ts.map +1 -1
  131. package/lib/typescript/src/types/SyncTypes.d.ts +28 -5
  132. package/lib/typescript/src/types/SyncTypes.d.ts.map +1 -1
  133. package/lib/typescript/src/utils/isModuleReady.d.ts.map +1 -1
  134. package/lib/typescript/src/utils/isValidDate.d.ts.map +1 -1
  135. package/package.json +94 -98
  136. package/src/NativeRookSdk.ts +282 -0
  137. package/{lib/commonjs/context/RookSyncGateContext.js → src/context/RookSyncGateContext.ts} +10 -13
  138. package/src/context/RookSyncGateProvider.tsx +78 -0
  139. package/{lib/commonjs/context/RookSyncGateReducer.js → src/context/RookSyncGateReducer.ts} +12 -33
  140. package/src/context/RookSyncGateTypes.ts +34 -0
  141. package/src/hooks/useRookAPISources.ts +83 -0
  142. package/src/hooks/useRookAndroidBackgroundSteps.ts +81 -0
  143. package/src/hooks/useRookAppleHealth.ts +55 -0
  144. package/src/hooks/useRookConfiguration.ts +82 -0
  145. package/src/hooks/useRookData.ts +122 -0
  146. package/src/hooks/useRookHealthConnect.ts +59 -0
  147. package/src/hooks/useRookPermissions.ts +224 -0
  148. package/src/hooks/useRookSamsungHealth.ts +37 -0
  149. package/src/hooks/useRookSync.ts +157 -0
  150. package/src/hooks/useRookVariables.ts +77 -0
  151. package/src/index.tsx +28 -0
  152. package/src/modules/hook/useRookAutoSync.ts +305 -0
  153. package/src/modules/types/sendMessageBroadcast.ts +5 -0
  154. package/src/modules/utils/errors.ts +9 -0
  155. package/src/types/ActivityEvent.ts +159 -0
  156. package/src/types/AppleHealthPermissions.ts +49 -0
  157. package/src/types/AuthorizedSources.ts +33 -0
  158. package/src/types/BodySummary.ts +116 -0
  159. package/src/types/DataSource.ts +16 -0
  160. package/src/types/HeartRateEvent.ts +26 -0
  161. package/src/types/PermissionsType.ts +9 -0
  162. package/src/types/PhysicalSummary.ts +84 -0
  163. package/src/types/Rook.ts +8 -0
  164. package/src/types/SDKSources.ts +5 -0
  165. package/src/types/SamsungHealthPermissions.ts +16 -0
  166. package/src/types/SleepSummary.ts +66 -0
  167. package/src/types/SummaryTypes.ts +70 -0
  168. package/src/types/SyncTypes.ts +63 -0
  169. package/{lib/commonjs/utils/isModuleReady.js → src/utils/isModuleReady.ts} +4 -10
  170. package/src/utils/isRunningOnAndroid.ts +10 -0
  171. package/src/utils/isRunningOniOS.ts +10 -0
  172. package/{lib/commonjs/utils/isValidDate.js → src/utils/isValidDate.ts} +5 -10
  173. package/android/src/main/AndroidManifestNew.xml +0 -36
  174. package/android/src/main/java/com/rooksdk/broadcasts/AndroidPermissionsReceiverTransmitter.kt +0 -65
  175. package/android/src/main/java/com/rooksdk/broadcasts/HealthConnectPermissionsReceiverTransmitter.kt +0 -70
  176. package/android/src/main/java/com/rooksdk/broadcasts/SamsungHealthPermissionsReceiverTransmitter.kt +0 -52
  177. package/android/src/main/java/com/rooksdk/modules/RookBackgroundSyncModule.kt +0 -85
  178. package/android/src/main/java/com/rooksdk/modules/RookConfigurationModule.kt +0 -148
  179. package/android/src/main/java/com/rooksdk/modules/RookLocalData.kt +0 -247
  180. package/android/src/main/java/com/rooksdk/modules/RookPermissionsModule.kt +0 -309
  181. package/android/src/main/java/com/rooksdk/modules/RookStepsModule.kt +0 -105
  182. package/android/src/main/java/com/rooksdk/modules/RookSyncModule.kt +0 -496
  183. package/android/src/main/java/com/rooksdk/utils/DatasourcesUtils.kt +0 -63
  184. package/android/src/main/java/com/rooksdk/utils/PermissionConversion.kt +0 -21
  185. package/android/src/main/java/com/rooksdk/utils/ReadableToWritable.kt +0 -64
  186. package/android/src/main/java/com/rooksdk/utils/RookDateTime.kt +0 -20
  187. package/android/src/main/java/com/rooksdk/utils/SamsungAvailability.kt +0 -21
  188. package/android/src/main/java/com/rooksdk/utils/Source.kt +0 -6
  189. package/android/src/main/java/com/rooksdk/utils/StringToSyncType.kt +0 -58
  190. package/android/src/main/java/com/rooksdk/utils/serializers/InstantSerializer.kt +0 -19
  191. package/android/src/main/java/com/rooksdk/utils/serializers/LocalDateSerializer.kt +0 -21
  192. package/android/src/main/res/drawable/ic_health_connect.xml +0 -19
  193. package/android/src/main/res/values/themes.xml +0 -3
  194. package/ios/EncodableRookDataSource.swift +0 -36
  195. package/ios/EncodableStatusDataSources.swift +0 -47
  196. package/ios/RookBackgroundModule.h +0 -5
  197. package/ios/RookBackgroundModule.mm +0 -89
  198. package/ios/RookConfigurationModule.h +0 -5
  199. package/ios/RookConfigurationModule.mm +0 -163
  200. package/ios/RookExternalModule.h +0 -5
  201. package/ios/RookExternalModule.m +0 -27
  202. package/ios/RookLocalData.swift +0 -152
  203. package/ios/RookPermissionsModule.h +0 -5
  204. package/ios/RookPermissionsModule.mm +0 -180
  205. package/ios/RookSourcesModule.h +0 -5
  206. package/ios/RookSourcesModule.mm +0 -67
  207. package/ios/RookSync.h +0 -5
  208. package/ios/RookSync.m +0 -27
  209. package/ios/RookSyncModule.h +0 -5
  210. package/ios/RookSyncModule.mm +0 -476
  211. package/ios/SwiftTest.swift +0 -18
  212. package/ios/react-native-rook-sdk-Bridging-Header.h +0 -12
  213. package/lib/commonjs/context/RookSyncGateContext.js.map +0 -1
  214. package/lib/commonjs/context/RookSyncGateProvider.js +0 -98
  215. package/lib/commonjs/context/RookSyncGateProvider.js.map +0 -1
  216. package/lib/commonjs/context/RookSyncGateReducer.js.map +0 -1
  217. package/lib/commonjs/context/RookSyncGateTypes.js +0 -6
  218. package/lib/commonjs/context/RookSyncGateTypes.js.map +0 -1
  219. package/lib/commonjs/context/index.js +0 -14
  220. package/lib/commonjs/context/index.js.map +0 -1
  221. package/lib/commonjs/hooks/index.js +0 -90
  222. package/lib/commonjs/hooks/index.js.map +0 -1
  223. package/lib/commonjs/hooks/useRookAndroidBackgroundSteps.js +0 -100
  224. package/lib/commonjs/hooks/useRookAndroidBackgroundSteps.js.map +0 -1
  225. package/lib/commonjs/hooks/useRookAppleHealth.js +0 -74
  226. package/lib/commonjs/hooks/useRookAppleHealth.js.map +0 -1
  227. package/lib/commonjs/hooks/useRookAppleHealthVariables.js +0 -48
  228. package/lib/commonjs/hooks/useRookAppleHealthVariables.js.map +0 -1
  229. package/lib/commonjs/hooks/useRookConfiguration.js +0 -188
  230. package/lib/commonjs/hooks/useRookConfiguration.js.map +0 -1
  231. package/lib/commonjs/hooks/useRookData.js +0 -100
  232. package/lib/commonjs/hooks/useRookData.js.map +0 -1
  233. package/lib/commonjs/hooks/useRookDataSources.js +0 -118
  234. package/lib/commonjs/hooks/useRookDataSources.js.map +0 -1
  235. package/lib/commonjs/hooks/useRookEvents.js +0 -225
  236. package/lib/commonjs/hooks/useRookEvents.js.map +0 -1
  237. package/lib/commonjs/hooks/useRookHealthConnect.js +0 -70
  238. package/lib/commonjs/hooks/useRookHealthConnect.js.map +0 -1
  239. package/lib/commonjs/hooks/useRookPermissions.js +0 -226
  240. package/lib/commonjs/hooks/useRookPermissions.js.map +0 -1
  241. package/lib/commonjs/hooks/useRookSummaries.js +0 -85
  242. package/lib/commonjs/hooks/useRookSummaries.js.map +0 -1
  243. package/lib/commonjs/hooks/useRookSync.js +0 -147
  244. package/lib/commonjs/hooks/useRookSync.js.map +0 -1
  245. package/lib/commonjs/hooks/useRookVariables.js +0 -69
  246. package/lib/commonjs/hooks/useRookVariables.js.map +0 -1
  247. package/lib/commonjs/index.js +0 -56
  248. package/lib/commonjs/index.js.map +0 -1
  249. package/lib/commonjs/modules/hook/useRookAutoSync.js +0 -262
  250. package/lib/commonjs/modules/hook/useRookAutoSync.js.map +0 -1
  251. package/lib/commonjs/modules/types/sendMessageBroadcast.js +0 -2
  252. package/lib/commonjs/modules/types/sendMessageBroadcast.js.map +0 -1
  253. package/lib/commonjs/modules/utils/errors.js +0 -12
  254. package/lib/commonjs/modules/utils/errors.js.map +0 -1
  255. package/lib/commonjs/types/ActivityEvent.js +0 -6
  256. package/lib/commonjs/types/ActivityEvent.js.map +0 -1
  257. package/lib/commonjs/types/AuthorizedSources.js +0 -2
  258. package/lib/commonjs/types/AuthorizedSources.js.map +0 -1
  259. package/lib/commonjs/types/BodySummary.js +0 -6
  260. package/lib/commonjs/types/BodySummary.js.map +0 -1
  261. package/lib/commonjs/types/DataSource.js +0 -2
  262. package/lib/commonjs/types/PermissionsType.js +0 -2
  263. package/lib/commonjs/types/PermissionsType.js.map +0 -1
  264. package/lib/commonjs/types/PhysicalSummary.js +0 -6
  265. package/lib/commonjs/types/PhysicalSummary.js.map +0 -1
  266. package/lib/commonjs/types/SDKSources.js +0 -13
  267. package/lib/commonjs/types/SDKSources.js.map +0 -1
  268. package/lib/commonjs/types/SamsungHealthPermissions.js +0 -23
  269. package/lib/commonjs/types/SamsungHealthPermissions.js.map +0 -1
  270. package/lib/commonjs/types/SleepSummary.js +0 -6
  271. package/lib/commonjs/types/SleepSummary.js.map +0 -1
  272. package/lib/commonjs/types/SummaryTypes.js +0 -2
  273. package/lib/commonjs/types/SummaryTypes.js.map +0 -1
  274. package/lib/commonjs/types/SyncTypes.js +0 -6
  275. package/lib/commonjs/utils/credentials.js +0 -12
  276. package/lib/commonjs/utils/credentials.js.map +0 -1
  277. package/lib/commonjs/utils/getNativeModule.js +0 -29
  278. package/lib/commonjs/utils/getNativeModule.js.map +0 -1
  279. package/lib/commonjs/utils/getRookModule.js +0 -28
  280. package/lib/commonjs/utils/getRookModule.js.map +0 -1
  281. package/lib/commonjs/utils/isModuleReady.js.map +0 -1
  282. package/lib/commonjs/utils/isRunningOnAndroid.js +0 -15
  283. package/lib/commonjs/utils/isRunningOnAndroid.js.map +0 -1
  284. package/lib/commonjs/utils/isRunningOniOS.js +0 -15
  285. package/lib/commonjs/utils/isRunningOniOS.js.map +0 -1
  286. package/lib/commonjs/utils/isValidDate.js.map +0 -1
  287. package/lib/commonjs/utils/nativeModules.js +0 -28
  288. package/lib/commonjs/utils/nativeModules.js.map +0 -1
  289. package/lib/commonjs/utils/packageInfo.js +0 -13
  290. package/lib/commonjs/utils/packageInfo.js.map +0 -1
  291. package/lib/module/context/index.js +0 -2
  292. package/lib/module/context/index.js.map +0 -1
  293. package/lib/module/hooks/index.js +0 -13
  294. package/lib/module/hooks/index.js.map +0 -1
  295. package/lib/module/hooks/useRookAppleHealthVariables.js +0 -41
  296. package/lib/module/hooks/useRookAppleHealthVariables.js.map +0 -1
  297. package/lib/module/hooks/useRookDataSources.js +0 -110
  298. package/lib/module/hooks/useRookDataSources.js.map +0 -1
  299. package/lib/module/hooks/useRookEvents.js +0 -218
  300. package/lib/module/hooks/useRookEvents.js.map +0 -1
  301. package/lib/module/hooks/useRookSummaries.js +0 -78
  302. package/lib/module/hooks/useRookSummaries.js.map +0 -1
  303. package/lib/module/utils/credentials.js +0 -6
  304. package/lib/module/utils/credentials.js.map +0 -1
  305. package/lib/module/utils/getNativeModule.js +0 -23
  306. package/lib/module/utils/getNativeModule.js.map +0 -1
  307. package/lib/module/utils/getRookModule.js +0 -22
  308. package/lib/module/utils/getRookModule.js.map +0 -1
  309. package/lib/module/utils/nativeModules.js +0 -22
  310. package/lib/module/utils/nativeModules.js.map +0 -1
  311. package/lib/module/utils/packageInfo.js +0 -7
  312. package/lib/module/utils/packageInfo.js.map +0 -1
  313. package/lib/typescript/src/context/index.d.ts +0 -2
  314. package/lib/typescript/src/context/index.d.ts.map +0 -1
  315. package/lib/typescript/src/hooks/index.d.ts +0 -13
  316. package/lib/typescript/src/hooks/index.d.ts.map +0 -1
  317. package/lib/typescript/src/hooks/useRookAppleHealthVariables.d.ts +0 -15
  318. package/lib/typescript/src/hooks/useRookAppleHealthVariables.d.ts.map +0 -1
  319. package/lib/typescript/src/hooks/useRookDataSources.d.ts +0 -22
  320. package/lib/typescript/src/hooks/useRookDataSources.d.ts.map +0 -1
  321. package/lib/typescript/src/hooks/useRookEvents.d.ts +0 -26
  322. package/lib/typescript/src/hooks/useRookEvents.d.ts.map +0 -1
  323. package/lib/typescript/src/hooks/useRookSummaries.d.ts +0 -14
  324. package/lib/typescript/src/hooks/useRookSummaries.d.ts.map +0 -1
  325. package/lib/typescript/src/utils/credentials.d.ts +0 -5
  326. package/lib/typescript/src/utils/credentials.d.ts.map +0 -1
  327. package/lib/typescript/src/utils/getNativeModule.d.ts +0 -10
  328. package/lib/typescript/src/utils/getNativeModule.d.ts.map +0 -1
  329. package/lib/typescript/src/utils/getRookModule.d.ts +0 -9
  330. package/lib/typescript/src/utils/getRookModule.d.ts.map +0 -1
  331. package/lib/typescript/src/utils/nativeModules.d.ts +0 -23
  332. package/lib/typescript/src/utils/nativeModules.d.ts.map +0 -1
  333. package/lib/typescript/src/utils/packageInfo.d.ts +0 -6
  334. package/lib/typescript/src/utils/packageInfo.d.ts.map +0 -1
  335. package/react-native-rook-sdk.podspec +0 -45
package/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2024 Rook
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
- # Rook SDK
1
+ # react-native-rook-sdk
2
2
 
3
- This SDK enables apps to extract and upload data from Health Connect, with this sdk you will be able to extract and upload data from health connect, [if you need check our app demo](https://github.com/RookeriesDevelopment/rook_demo_app_android_react_native_rook_sdk/tree/main)
3
+ Extract health data from health connect, apple health and samsung health to transform to a RookScore
4
4
 
5
- If you need more information please refer to the [official documentation](https://docs.tryrook.io/docs/category/reactnative)
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
@@ -1,6 +1,7 @@
1
1
  buildscript {
2
- // Buildscript is evaluated before everything else so we can't use getExtOrDefault
3
- def kotlin_version = rootProject.ext.has("kotlinVersion") ? rootProject.ext.get("kotlinVersion") : project.properties["RookSdk_kotlinVersion"]
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.1"
12
+ classpath "com.android.tools.build:gradle:8.7.2"
12
13
  // noinspection DifferentKotlinGradleVersion
13
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
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
- if (isNewArchitectureEnabled()) {
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
- if (supportsNamespace()) {
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
- // For < 0.71, this will be from the local maven repo
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=1.7.0
2
- RookSdk_minSdkVersion=21
3
- RookSdk_targetSdkVersion=31
4
- RookSdk_compileSdkVersion=31
5
- RookSdk_ndkversion=21.4.7075529
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,3 +1,2 @@
1
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2
- package="com.rooksdk">
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
3
2
  </manifest>
@@ -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.bridge.ReactContextBaseJavaModule
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
- * The `RookSdkHealthConnectModule` class is a React Native module that interfaces
38
- * with the Rook SDK for managing and syncing health data using Android's Health Connect.
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
- @ReactMethod
89
- fun addListener(eventName: String) {
90
- if (listenerCount == 0) {
91
- androidPermissionsReceiverTransmitter.setReactApplicationContext(reactApplicationContext)
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
- @ReactMethod
121
- fun removeListeners(count: Int) {
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 = "RookSdk"
26
+ const val NAME = "RNRookSdk"
238
27
  }
239
28
  }
@@ -1,42 +1,33 @@
1
1
  package com.rooksdk
2
2
 
3
- import RookSyncModule
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.uimanager.ViewManager
8
- import com.rookmotion.rook.sdk.RookConfigurationManager
9
- import com.rooksdk.modules.RookBackgroundSyncModule
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
- class RookSdkPackage : ReactPackage {
18
- private var rookConfigurationManager: RookConfigurationManager? = null
19
- private var rookSamsung: RookSamsung? = null
20
-
21
- override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
22
- if (rookConfigurationManager == null)
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 createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
40
- return emptyList()
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
- // react-native-rook-sdk
3
+ // RNRookSdk
4
4
  //
5
- // Created by Javier Villanueva on 09/10/25.
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.source, forKey: .name)
29
- try container.encode(dataSource.status, forKey: .authorized)
30
- try container.encode(dataSource.imageURL, forKey: .imageUrl)
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
- // react-native-rook-sdk
3
+ // RNRookSdk
4
4
  //
5
- // Created by Javier Villanueva on 08/10/25.
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.authorizationURL, forKey: .authorizationUrl)
29
+ try container.encode(authorizer.authorizationUrl, forKey: .authorizationUrl)
31
30
  }
32
31
  }