react-native-rook-sdk 1.3.1 → 2.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/android/build.gradle +3 -2
- package/android/src/main/java/com/rooksdk/RookSdkModule.kt +66 -15
- package/android/src/main/java/com/rooksdk/RookSdkPackage.kt +10 -5
- package/android/src/main/java/com/rooksdk/broadcasts/SamsungHealthPermissionsReceiverTransmitter.kt +52 -0
- package/android/src/main/java/com/rooksdk/modules/RookConfigurationModule.kt +54 -20
- package/android/src/main/java/com/rooksdk/modules/RookPermissionsModule.kt +92 -2
- package/android/src/main/java/com/rooksdk/modules/RookSyncModule.kt +157 -296
- package/android/src/main/java/com/rooksdk/utils/DatasourcesUtils.kt +14 -0
- package/android/src/main/java/com/rooksdk/utils/PermissionConversion.kt +21 -0
- package/android/src/main/java/com/rooksdk/utils/SamsungAvailability.kt +21 -0
- package/android/src/main/java/com/rooksdk/utils/Source.kt +6 -0
- package/android/src/main/java/com/rooksdk/utils/StringToSyncType.kt +25 -0
- package/lib/commonjs/hooks/index.js +7 -0
- package/lib/commonjs/hooks/index.js.map +1 -1
- package/lib/commonjs/hooks/useRookAppleHealthVariables.js +1 -0
- package/lib/commonjs/hooks/useRookAppleHealthVariables.js.map +1 -1
- package/lib/commonjs/hooks/useRookConfiguration.js +33 -14
- package/lib/commonjs/hooks/useRookConfiguration.js.map +1 -1
- package/lib/commonjs/hooks/useRookDataSources.js +1 -0
- package/lib/commonjs/hooks/useRookDataSources.js.map +1 -1
- package/lib/commonjs/hooks/useRookPermissions.js +32 -5
- package/lib/commonjs/hooks/useRookPermissions.js.map +1 -1
- package/lib/commonjs/hooks/useRookSync.js +103 -25
- package/lib/commonjs/hooks/useRookSync.js.map +1 -1
- package/lib/commonjs/hooks/useRookVariables.js +69 -0
- package/lib/commonjs/hooks/useRookVariables.js.map +1 -0
- package/lib/commonjs/index.js +17 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/modules/hook/useRookAutoSync.js +25 -2
- package/lib/commonjs/modules/hook/useRookAutoSync.js.map +1 -1
- package/lib/commonjs/modules/utils/errors.js +1 -1
- package/lib/commonjs/modules/utils/errors.js.map +1 -1
- package/lib/commonjs/types/SDKSources.js +13 -0
- package/lib/commonjs/types/SDKSources.js.map +1 -0
- package/lib/commonjs/types/SamsungHealthPermissions.js +23 -0
- package/lib/commonjs/types/SamsungHealthPermissions.js.map +1 -0
- package/lib/commonjs/types/SyncTypes.js +4 -0
- package/lib/module/hooks/index.js +1 -0
- package/lib/module/hooks/index.js.map +1 -1
- package/lib/module/hooks/useRookAppleHealthVariables.js +1 -0
- package/lib/module/hooks/useRookAppleHealthVariables.js.map +1 -1
- package/lib/module/hooks/useRookConfiguration.js +33 -15
- package/lib/module/hooks/useRookConfiguration.js.map +1 -1
- package/lib/module/hooks/useRookDataSources.js +1 -0
- package/lib/module/hooks/useRookDataSources.js.map +1 -1
- package/lib/module/hooks/useRookPermissions.js +32 -5
- package/lib/module/hooks/useRookPermissions.js.map +1 -1
- package/lib/module/hooks/useRookSync.js +103 -25
- package/lib/module/hooks/useRookSync.js.map +1 -1
- package/lib/module/hooks/useRookVariables.js +61 -0
- package/lib/module/hooks/useRookVariables.js.map +1 -0
- package/lib/module/index.js +2 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/modules/hook/useRookAutoSync.js +25 -2
- package/lib/module/modules/hook/useRookAutoSync.js.map +1 -1
- package/lib/module/modules/utils/errors.js +1 -1
- package/lib/module/modules/utils/errors.js.map +1 -1
- package/lib/module/types/SDKSources.js +7 -0
- package/lib/module/types/SDKSources.js.map +1 -0
- package/lib/module/types/SamsungHealthPermissions.js +17 -0
- package/lib/module/types/SamsungHealthPermissions.js.map +1 -0
- package/lib/module/types/SyncTypes.js +1 -1
- package/lib/typescript/src/hooks/index.d.ts +1 -0
- package/lib/typescript/src/hooks/index.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookAppleHealthVariables.d.ts +1 -0
- package/lib/typescript/src/hooks/useRookAppleHealthVariables.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookConfiguration.d.ts +8 -4
- package/lib/typescript/src/hooks/useRookConfiguration.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookDataSources.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookPermissions.d.ts +9 -4
- package/lib/typescript/src/hooks/useRookPermissions.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookSync.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useRookVariables.d.ts +22 -0
- package/lib/typescript/src/hooks/useRookVariables.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +2 -0
- 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/SDKSources.d.ts +6 -0
- package/lib/typescript/src/types/SDKSources.d.ts.map +1 -0
- package/lib/typescript/src/types/SamsungHealthPermissions.d.ts +16 -0
- package/lib/typescript/src/types/SamsungHealthPermissions.d.ts.map +1 -0
- package/lib/typescript/src/types/SyncTypes.d.ts +15 -1
- package/lib/typescript/src/types/SyncTypes.d.ts.map +1 -1
- package/package.json +1 -1
- package/react-native-rook-sdk.podspec +1 -1
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
package com.rooksdk.modules
|
|
2
|
-
|
|
3
1
|
import android.annotation.SuppressLint
|
|
4
2
|
import com.facebook.react.bridge.Arguments
|
|
5
3
|
import com.facebook.react.bridge.Callback
|
|
@@ -9,18 +7,17 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
|
9
7
|
import com.facebook.react.bridge.ReactMethod
|
|
10
8
|
import com.facebook.react.bridge.ReadableMap
|
|
11
9
|
import com.google.gson.Gson
|
|
12
|
-
import com.rookmotion.rook.sdk.RookConfigurationManager
|
|
13
10
|
import com.rookmotion.rook.sdk.RookContinuousUploadManager
|
|
14
11
|
import com.rookmotion.rook.sdk.RookDataSources
|
|
15
|
-
import com.rookmotion.rook.sdk.RookEventManager
|
|
16
|
-
import com.rookmotion.rook.sdk.RookSummaryManager
|
|
17
12
|
import com.rookmotion.rook.sdk.RookSyncManager
|
|
18
|
-
import com.rookmotion.rook.sdk.domain.enums.SyncStatus
|
|
19
13
|
import com.rookmotion.rook.sdk.domain.model.SyncStatusWithData
|
|
20
14
|
import com.rooksdk.utils.DatasourcesUtils.dataSourcesToWritableArray
|
|
21
15
|
import com.rooksdk.utils.DatasourcesUtils.mapToDataSourceType
|
|
22
16
|
import com.rooksdk.utils.RookDateTime
|
|
17
|
+
import com.rooksdk.utils.SamsungAvailability
|
|
23
18
|
import com.rooksdk.utils.StringToSyncType
|
|
19
|
+
import io.tryrook.sdk.samsung.RookSamsung
|
|
20
|
+
import io.tryrook.sdk.samsung.domain.model.SHSyncStatusWithData
|
|
24
21
|
import kotlinx.coroutines.CoroutineScope
|
|
25
22
|
import kotlinx.coroutines.Dispatchers
|
|
26
23
|
import kotlinx.coroutines.SupervisorJob
|
|
@@ -28,7 +25,7 @@ import kotlinx.coroutines.launch
|
|
|
28
25
|
|
|
29
26
|
class RookSyncModule(
|
|
30
27
|
reactContext: ReactApplicationContext,
|
|
31
|
-
|
|
28
|
+
private val rookSamsung: RookSamsung
|
|
32
29
|
): ReactContextBaseJavaModule(reactContext) {
|
|
33
30
|
|
|
34
31
|
private val rookContinuousUploadManager by lazy {
|
|
@@ -39,14 +36,6 @@ class RookSyncModule(
|
|
|
39
36
|
RookSyncManager(reactContext)
|
|
40
37
|
}
|
|
41
38
|
|
|
42
|
-
private val rookEventManager by lazy {
|
|
43
|
-
RookEventManager(rookConfigurationManager)
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
private val rookSummaryManager by lazy {
|
|
47
|
-
RookSummaryManager(rookConfigurationManager)
|
|
48
|
-
}
|
|
49
|
-
|
|
50
39
|
private val scope: CoroutineScope by lazy {
|
|
51
40
|
CoroutineScope(SupervisorJob() + Dispatchers.Main)
|
|
52
41
|
}
|
|
@@ -73,302 +62,50 @@ class RookSyncModule(
|
|
|
73
62
|
}
|
|
74
63
|
}
|
|
75
64
|
|
|
76
|
-
// Sleep
|
|
77
|
-
/**
|
|
78
|
-
* Synchronizes the sleep summary data for the given date.
|
|
79
|
-
* @param date The date for which to sync the data (in string format).
|
|
80
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
81
|
-
*/
|
|
82
|
-
@ReactMethod
|
|
83
|
-
fun syncSleepSummary(date: String, promise: Promise) {
|
|
84
|
-
scope.launch {
|
|
85
|
-
val result = rookSummaryManager.syncSleepSummary(RookDateTime.stringToLocalDate(date))
|
|
86
|
-
|
|
87
|
-
result.fold({
|
|
88
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
89
|
-
else promise.resolve(false)
|
|
90
|
-
}, {
|
|
91
|
-
promise.reject(it)
|
|
92
|
-
})
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Body
|
|
97
|
-
/**
|
|
98
|
-
* Synchronizes the body summary data for the given date.
|
|
99
|
-
* @param date The date for which to sync the data (in string format).
|
|
100
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
101
|
-
*/
|
|
102
|
-
@ReactMethod
|
|
103
|
-
fun syncBodySummary(date: String, promise: Promise) {
|
|
104
|
-
scope.launch {
|
|
105
|
-
val result = rookSummaryManager.syncBodySummary(RookDateTime.stringToLocalDate(date))
|
|
106
|
-
|
|
107
|
-
result.fold({
|
|
108
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
109
|
-
else promise.resolve(false)
|
|
110
|
-
}, {
|
|
111
|
-
promise.reject(it)
|
|
112
|
-
})
|
|
113
|
-
}
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// Physical
|
|
117
|
-
/**
|
|
118
|
-
* Synchronizes the physical summary data for the given date.
|
|
119
|
-
* @param date The date for which to sync the data (in string format).
|
|
120
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
121
|
-
*/
|
|
122
|
-
@ReactMethod
|
|
123
|
-
fun syncPhysicalSummary(date: String, promise: Promise) {
|
|
124
|
-
scope.launch {
|
|
125
|
-
val result = rookSummaryManager.syncPhysicalSummary(RookDateTime.stringToLocalDate(date))
|
|
126
|
-
|
|
127
|
-
result.fold({
|
|
128
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
129
|
-
else promise.resolve(false)
|
|
130
|
-
}, {
|
|
131
|
-
promise.reject(it)
|
|
132
|
-
})
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Sync all failed summaries
|
|
138
|
-
*/
|
|
139
|
-
@ReactMethod
|
|
140
|
-
fun syncPendingSummaries(promise: Promise) {
|
|
141
|
-
scope.launch {
|
|
142
|
-
val result = rookSummaryManager.syncPendingSummaries()
|
|
143
|
-
|
|
144
|
-
result.fold({
|
|
145
|
-
promise.resolve(true)
|
|
146
|
-
}, {
|
|
147
|
-
promise.reject(it)
|
|
148
|
-
})
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
// MARK: - Events
|
|
153
|
-
/**
|
|
154
|
-
* Synchronizes the physical events data for the given date.
|
|
155
|
-
* @param date The date for which to sync the data (in string format).
|
|
156
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
157
|
-
*/
|
|
158
|
-
@ReactMethod
|
|
159
|
-
fun syncPhysicalEvents(date: String, promise: Promise) {
|
|
160
|
-
scope.launch {
|
|
161
|
-
val result = rookEventManager.syncPhysicalEvents(RookDateTime.stringToLocalDate(date))
|
|
162
|
-
|
|
163
|
-
result.fold({
|
|
164
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
165
|
-
else promise.resolve(false)
|
|
166
|
-
}, {
|
|
167
|
-
promise.reject(it)
|
|
168
|
-
})
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/**
|
|
173
|
-
* Synchronizes the blood glucose events data for the given date.
|
|
174
|
-
* @param date The date for which to sync the data (in string format).
|
|
175
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
176
|
-
*/
|
|
177
|
-
@ReactMethod
|
|
178
|
-
fun syncBloodGlucoseEvents(date: String, promise: Promise) {
|
|
179
|
-
scope.launch {
|
|
180
|
-
val result = rookEventManager.syncBloodGlucoseEvents(RookDateTime.stringToLocalDate(date))
|
|
181
|
-
|
|
182
|
-
result.fold({
|
|
183
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
184
|
-
else promise.resolve(false)
|
|
185
|
-
}, {
|
|
186
|
-
promise.reject(it)
|
|
187
|
-
})
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Synchronizes the blood pressure events data for the given date.
|
|
193
|
-
* @param date The date for which to sync the data (in string format).
|
|
194
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
195
|
-
*/
|
|
196
|
-
@ReactMethod
|
|
197
|
-
fun syncBloodPressureEvents(date: String, promise: Promise) {
|
|
198
|
-
scope.launch {
|
|
199
|
-
val result = rookEventManager.syncBloodPressureEvents(RookDateTime.stringToLocalDate(date))
|
|
200
|
-
|
|
201
|
-
result.fold({
|
|
202
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
203
|
-
else promise.resolve(false)
|
|
204
|
-
}, {
|
|
205
|
-
promise.reject(it)
|
|
206
|
-
})
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* Synchronizes the body metrics event data for the given date.
|
|
212
|
-
* @param date The date for which to sync the data (in string format).
|
|
213
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
214
|
-
*/
|
|
215
|
-
@ReactMethod
|
|
216
|
-
fun syncBodyMetricsEvent(date: String, promise: Promise) {
|
|
217
|
-
scope.launch {
|
|
218
|
-
val result = rookEventManager.syncBodyMetricsEvents(RookDateTime.stringToLocalDate(date))
|
|
219
|
-
|
|
220
|
-
result.fold({
|
|
221
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
222
|
-
else promise.resolve(false)
|
|
223
|
-
}, {
|
|
224
|
-
promise.reject(it)
|
|
225
|
-
})
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* Synchronizes the body heart Rate events data for the given date.
|
|
231
|
-
* @param date The date for which to sync the data (in string format).
|
|
232
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
233
|
-
*/
|
|
234
|
-
@ReactMethod
|
|
235
|
-
fun syncBodyHeartRateEvent(date: String, promise: Promise) {
|
|
236
|
-
scope.launch {
|
|
237
|
-
val result = rookEventManager.syncBodyHeartRateEvents(RookDateTime.stringToLocalDate(date))
|
|
238
|
-
|
|
239
|
-
result.fold({
|
|
240
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
241
|
-
else promise.resolve(false)
|
|
242
|
-
}, {
|
|
243
|
-
promise.reject(it)
|
|
244
|
-
})
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
/**
|
|
249
|
-
* Synchronizes the physical heart rate events data for the given date.
|
|
250
|
-
* @param date The date for which to sync the data (in string format).
|
|
251
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
252
|
-
*/
|
|
253
|
-
@ReactMethod
|
|
254
|
-
fun syncPhysicalHeartRateEvent(date: String, promise: Promise) {
|
|
255
|
-
scope.launch {
|
|
256
|
-
val result = rookEventManager.syncPhysicalHeartRateEvents(RookDateTime.stringToLocalDate(date))
|
|
257
|
-
|
|
258
|
-
result.fold({
|
|
259
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
260
|
-
else promise.resolve(false)
|
|
261
|
-
}, {
|
|
262
|
-
promise.reject(it)
|
|
263
|
-
})
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Synchronizes the nutrition events data for the given date.
|
|
269
|
-
* @param date The date for which to sync the data (in string format).
|
|
270
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
271
|
-
*/
|
|
272
|
-
@ReactMethod
|
|
273
|
-
fun syncNutritionEvents(date: String, promise: Promise) {
|
|
274
|
-
scope.launch {
|
|
275
|
-
val result = rookEventManager.syncNutritionEvents(RookDateTime.stringToLocalDate(date))
|
|
276
|
-
|
|
277
|
-
result.fold({
|
|
278
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
279
|
-
else promise.resolve(false)
|
|
280
|
-
}, {
|
|
281
|
-
promise.reject(it)
|
|
282
|
-
})
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
/**
|
|
287
|
-
* Synchronizes the hydration events data for the given date.
|
|
288
|
-
* @param date The date for which to sync the data (in string format).
|
|
289
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
290
|
-
*/
|
|
291
|
-
@ReactMethod
|
|
292
|
-
fun syncHydrationEvents(date: String, promise: Promise) {
|
|
293
|
-
scope.launch {
|
|
294
|
-
val result = rookEventManager.syncHydrationEvents(RookDateTime.stringToLocalDate(date))
|
|
295
|
-
|
|
296
|
-
result.fold({
|
|
297
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
298
|
-
else promise.resolve(false)
|
|
299
|
-
}, {
|
|
300
|
-
promise.reject(it)
|
|
301
|
-
})
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Synchronizes the physical oxygenation events data for the given date.
|
|
307
|
-
* @param date The date for which to sync the data (in string format).
|
|
308
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
309
|
-
*/
|
|
310
65
|
@ReactMethod
|
|
311
|
-
fun
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
317
|
-
else promise.resolve(false)
|
|
318
|
-
}, {
|
|
319
|
-
promise.reject(it)
|
|
320
|
-
})
|
|
321
|
-
}
|
|
66
|
+
fun enableSamsungSync(promise: Promise) {
|
|
67
|
+
scope.launch {
|
|
68
|
+
rookSamsung.schedule(true)
|
|
69
|
+
promise.resolve(true)
|
|
70
|
+
}
|
|
322
71
|
}
|
|
323
72
|
|
|
324
|
-
/**
|
|
325
|
-
* Synchronizes the body oxygenation events data for the given date.
|
|
326
|
-
* @param date The date for which to sync the data (in string format).
|
|
327
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
328
|
-
*/
|
|
329
73
|
@ReactMethod
|
|
330
|
-
fun
|
|
74
|
+
fun isSamsungSyncEnabled(promise: Promise) {
|
|
331
75
|
scope.launch {
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
76
|
+
rookSamsung.isScheduled().fold(
|
|
77
|
+
{
|
|
78
|
+
promise.resolve(it)
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
promise.reject(it)
|
|
82
|
+
}
|
|
83
|
+
)
|
|
340
84
|
}
|
|
341
85
|
}
|
|
342
86
|
|
|
343
|
-
/**
|
|
344
|
-
* Synchronizes the sync temperature events data for the given date.
|
|
345
|
-
* @param date The date for which to sync the data (in string format).
|
|
346
|
-
* @param promise A promise object to handle the result (resolved on success, rejected on failure).
|
|
347
|
-
*/
|
|
348
87
|
@ReactMethod
|
|
349
|
-
fun
|
|
88
|
+
fun disableSamsungSync(promise: Promise) {
|
|
350
89
|
scope.launch {
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
result.fold({
|
|
354
|
-
if (it == SyncStatus.SYNCED) promise.resolve(true)
|
|
355
|
-
else promise.resolve(false)
|
|
356
|
-
}, {
|
|
357
|
-
promise.reject(it)
|
|
358
|
-
})
|
|
90
|
+
rookSamsung.cancel()
|
|
91
|
+
promise.resolve(true)
|
|
359
92
|
}
|
|
360
93
|
}
|
|
361
94
|
|
|
362
|
-
/**
|
|
363
|
-
* Synchronizes all failed events
|
|
364
|
-
*/
|
|
365
95
|
@ReactMethod
|
|
366
|
-
fun
|
|
96
|
+
fun syncTodaySamsungHealthStepsCount(promise: Promise) {
|
|
367
97
|
scope.launch {
|
|
368
|
-
|
|
98
|
+
rookSamsung.getTodayStepsCount().fold({
|
|
99
|
+
when (it) {
|
|
100
|
+
SHSyncStatusWithData.RecordsNotFound -> {
|
|
101
|
+
promise.reject("SamsungStepsCount", "Records Not Found")
|
|
102
|
+
}
|
|
369
103
|
|
|
370
|
-
|
|
371
|
-
|
|
104
|
+
is SHSyncStatusWithData.Synced -> {
|
|
105
|
+
val steps = it.data
|
|
106
|
+
promise.resolve(steps)
|
|
107
|
+
}
|
|
108
|
+
}
|
|
372
109
|
}, {
|
|
373
110
|
promise.reject(it)
|
|
374
111
|
})
|
|
@@ -390,7 +127,7 @@ class RookSyncModule(
|
|
|
390
127
|
{
|
|
391
128
|
when (it) {
|
|
392
129
|
SyncStatusWithData.RecordsNotFound -> {
|
|
393
|
-
promise.reject("
|
|
130
|
+
promise.reject("HealthConnectStepsCount", "Records Not Found")
|
|
394
131
|
}
|
|
395
132
|
|
|
396
133
|
is SyncStatusWithData.Synced -> {
|
|
@@ -513,6 +250,33 @@ class RookSyncModule(
|
|
|
513
250
|
}
|
|
514
251
|
}
|
|
515
252
|
|
|
253
|
+
@ReactMethod
|
|
254
|
+
fun syncSHTodayCaloriesCount(promise: Promise) {
|
|
255
|
+
scope.launch {
|
|
256
|
+
rookSamsung.getTodayCaloriesCount().fold(
|
|
257
|
+
{
|
|
258
|
+
when (it) {
|
|
259
|
+
SHSyncStatusWithData.RecordsNotFound -> {
|
|
260
|
+
promise.reject("syncTodayHealthConnect", "Records Not Found")
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
is SHSyncStatusWithData.Synced -> {
|
|
264
|
+
val data = Arguments.createMap().apply {
|
|
265
|
+
putDouble("basal", it.data.basal)
|
|
266
|
+
putDouble("active", it.data.active)
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
promise.resolve(data)
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
},
|
|
273
|
+
{
|
|
274
|
+
promise.reject(it)
|
|
275
|
+
}
|
|
276
|
+
)
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
|
|
516
280
|
/**
|
|
517
281
|
* Synchronizes the calories count for the current day from Health Connect.
|
|
518
282
|
* This method queries the Health Connect platform via the Rook SDK to retrieve
|
|
@@ -612,6 +376,103 @@ class RookSyncModule(
|
|
|
612
376
|
}
|
|
613
377
|
}
|
|
614
378
|
|
|
379
|
+
@ReactMethod
|
|
380
|
+
fun shSync(enableLogs: Boolean, callback: Callback) {
|
|
381
|
+
scope.launch {
|
|
382
|
+
if (!SamsungAvailability.isSamsungAvailable(rookSamsung)){
|
|
383
|
+
val params = Arguments.createMap().apply {
|
|
384
|
+
putString("domain", "Samsung health is not available")
|
|
385
|
+
}
|
|
386
|
+
|
|
387
|
+
callback.invoke(params, false)
|
|
388
|
+
return@launch
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
rookSamsung.sync(enableLogs).fold(
|
|
392
|
+
{
|
|
393
|
+
callback(null, true)
|
|
394
|
+
}, {
|
|
395
|
+
val params = Arguments.createMap().apply {
|
|
396
|
+
putString("domain", it.localizedMessage ?: it.message)
|
|
397
|
+
}
|
|
398
|
+
|
|
399
|
+
callback.invoke(params, false)
|
|
400
|
+
}
|
|
401
|
+
)
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
@ReactMethod
|
|
406
|
+
fun shSyncByDate(date: String, callback: Callback) {
|
|
407
|
+
val localDate = RookDateTime.stringToLocalDate(date)
|
|
408
|
+
|
|
409
|
+
scope.launch {
|
|
410
|
+
if (!SamsungAvailability.isSamsungAvailable(rookSamsung)){
|
|
411
|
+
val params = Arguments.createMap().apply {
|
|
412
|
+
putString("domain", "Samsung health is not available")
|
|
413
|
+
}
|
|
414
|
+
|
|
415
|
+
callback.invoke(params, false)
|
|
416
|
+
return@launch
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
rookSamsung.sync(localDate).fold({ result ->
|
|
420
|
+
callback.invoke(null, result)
|
|
421
|
+
}, {
|
|
422
|
+
val params = Arguments.createMap().apply {
|
|
423
|
+
putString("domain", it.localizedMessage ?: it.message)
|
|
424
|
+
}
|
|
425
|
+
|
|
426
|
+
callback.invoke(params, false)
|
|
427
|
+
})
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
@ReactMethod
|
|
432
|
+
fun shSyncByDefinition(summary: String, date: String, callback: Callback) {
|
|
433
|
+
val localDate = RookDateTime.stringToLocalDate(date)
|
|
434
|
+
val type = StringToSyncType.stringToSamsungPillar(summary)
|
|
435
|
+
|
|
436
|
+
scope.launch {
|
|
437
|
+
if (!SamsungAvailability.isSamsungAvailable(rookSamsung)){
|
|
438
|
+
val params = Arguments.createMap().apply {
|
|
439
|
+
putString("domain", "Samsung health is not available")
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
callback.invoke(params, false)
|
|
443
|
+
return@launch
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
rookSamsung.sync(localDate, type).fold({ result ->
|
|
447
|
+
callback.invoke(null, result)
|
|
448
|
+
}, {
|
|
449
|
+
val params = Arguments.createMap().apply {
|
|
450
|
+
putString("domain", it.localizedMessage ?: it.message)
|
|
451
|
+
}
|
|
452
|
+
|
|
453
|
+
callback.invoke(params, false)
|
|
454
|
+
})
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
@ReactMethod
|
|
459
|
+
fun shSyncEvent(date: String, event: String, promise: Promise) {
|
|
460
|
+
val localDate = RookDateTime.stringToLocalDate(date)
|
|
461
|
+
val type = StringToSyncType.stringToSamsungEvent(event)
|
|
462
|
+
|
|
463
|
+
scope.launch {
|
|
464
|
+
if (!SamsungAvailability.isSamsungAvailable(rookSamsung)){
|
|
465
|
+
promise.reject(Throwable("Samsung health is not available"))
|
|
466
|
+
return@launch
|
|
467
|
+
}
|
|
468
|
+
|
|
469
|
+
rookSamsung.syncEvents(localDate, type).fold({ result ->
|
|
470
|
+
promise.resolve(result)
|
|
471
|
+
}, {
|
|
472
|
+
promise.reject(it)
|
|
473
|
+
})
|
|
474
|
+
}
|
|
475
|
+
}
|
|
615
476
|
override fun getName(): String {
|
|
616
477
|
return "RookSyncModule"
|
|
617
478
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package com.rooksdk.utils
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.Arguments
|
|
4
|
+
import com.facebook.react.bridge.ReadableArray
|
|
4
5
|
import com.facebook.react.bridge.WritableArray
|
|
5
6
|
import com.rookmotion.rook.sdk.domain.enums.DataSourceType
|
|
6
7
|
import com.rookmotion.rook.sdk.domain.model.DataSource
|
|
@@ -46,4 +47,17 @@ object DatasourcesUtils {
|
|
|
46
47
|
return array
|
|
47
48
|
}
|
|
48
49
|
|
|
50
|
+
fun readableArrayToSourceList(sources: ReadableArray): List<Source> {
|
|
51
|
+
val rawList = sources.toArrayList()
|
|
52
|
+
|
|
53
|
+
return rawList
|
|
54
|
+
.mapNotNull { it as? String }
|
|
55
|
+
.mapNotNull {
|
|
56
|
+
try {
|
|
57
|
+
Source.valueOf(it)
|
|
58
|
+
} catch (e: IllegalArgumentException) {
|
|
59
|
+
null
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
49
63
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package com.rooksdk.utils
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.bridge.ReadableArray
|
|
4
|
+
import io.tryrook.sdk.samsung.domain.enums.SamsungHealthPermission
|
|
5
|
+
|
|
6
|
+
object PermissionConversion {
|
|
7
|
+
|
|
8
|
+
fun parseSamsungPermissions(rawPermissions: ReadableArray): Set<SamsungHealthPermission> {
|
|
9
|
+
val rawList = rawPermissions.toArrayList()
|
|
10
|
+
|
|
11
|
+
return rawList
|
|
12
|
+
.mapNotNull { it as? String }
|
|
13
|
+
.mapNotNull {
|
|
14
|
+
try {
|
|
15
|
+
SamsungHealthPermission.valueOf(it)
|
|
16
|
+
} catch (e: IllegalArgumentException) {
|
|
17
|
+
null
|
|
18
|
+
}
|
|
19
|
+
}.toSet()
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
package com.rooksdk.utils
|
|
2
|
+
|
|
3
|
+
import io.tryrook.sdk.samsung.RookSamsung
|
|
4
|
+
import io.tryrook.sdk.samsung.domain.enums.SamsungHealthAvailability
|
|
5
|
+
|
|
6
|
+
object SamsungAvailability {
|
|
7
|
+
suspend fun getSamsungHealthAvailabilityOrDefault(rookSamsung: RookSamsung): SamsungHealthAvailability {
|
|
8
|
+
val result = rookSamsung.checkSamsungHealthAvailability()
|
|
9
|
+
val defaultValue = SamsungHealthAvailability.NOT_INSTALLED
|
|
10
|
+
|
|
11
|
+
return result.getOrDefault(defaultValue)
|
|
12
|
+
}
|
|
13
|
+
suspend fun isSamsungAvailable(rookSamsung: RookSamsung): Boolean {
|
|
14
|
+
val result = rookSamsung.checkSamsungHealthAvailability()
|
|
15
|
+
val defaultValue = SamsungHealthAvailability.NOT_INSTALLED
|
|
16
|
+
|
|
17
|
+
val availability = result.getOrDefault(defaultValue)
|
|
18
|
+
|
|
19
|
+
return availability == SamsungHealthAvailability.INSTALLED
|
|
20
|
+
}
|
|
21
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
package com.rooksdk.utils
|
|
2
2
|
|
|
3
3
|
import com.rookmotion.rook.sdk.domain.model.SyncType
|
|
4
|
+
import io.tryrook.sdk.samsung.domain.model.SHSyncType
|
|
4
5
|
|
|
5
6
|
object StringToSyncType {
|
|
6
7
|
|
|
@@ -30,4 +31,28 @@ object StringToSyncType {
|
|
|
30
31
|
}
|
|
31
32
|
}
|
|
32
33
|
|
|
34
|
+
fun stringToSamsungPillar(value: String): SHSyncType.Summary {
|
|
35
|
+
return when(value.lowercase()) {
|
|
36
|
+
"sleep" -> SHSyncType.Summary.SLEEP
|
|
37
|
+
"body" -> SHSyncType.Summary.BODY
|
|
38
|
+
"physical" -> SHSyncType.Summary.PHYSICAL
|
|
39
|
+
else -> SHSyncType.Summary.BODY
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
fun stringToSamsungEvent(value: String): SHSyncType.Event {
|
|
44
|
+
return when (value.lowercase()) {
|
|
45
|
+
"activity" -> SHSyncType.Event.ACTIVITY
|
|
46
|
+
"blood_glucose" -> SHSyncType.Event.BLOOD_GLUCOSE
|
|
47
|
+
"blood_pressure" -> SHSyncType.Event.BLOOD_PRESSURE
|
|
48
|
+
"body_metrics" -> SHSyncType.Event.BODY_METRICS
|
|
49
|
+
"heart_rate" -> SHSyncType.Event.HEART_RATE
|
|
50
|
+
"hydration" -> SHSyncType.Event.HYDRATION
|
|
51
|
+
"nutrition" -> SHSyncType.Event.NUTRITION
|
|
52
|
+
"oxygenation" -> SHSyncType.Event.OXYGENATION
|
|
53
|
+
"steps" -> SHSyncType.Event.STEPS
|
|
54
|
+
"calories" -> SHSyncType.Event.CALORIES
|
|
55
|
+
else -> SHSyncType.Event.STEPS
|
|
56
|
+
}
|
|
57
|
+
}
|
|
33
58
|
}
|
|
@@ -63,6 +63,12 @@ Object.defineProperty(exports, "useRookSync", {
|
|
|
63
63
|
return _useRookSync.useRookSync;
|
|
64
64
|
}
|
|
65
65
|
});
|
|
66
|
+
Object.defineProperty(exports, "useRookVariables", {
|
|
67
|
+
enumerable: true,
|
|
68
|
+
get: function () {
|
|
69
|
+
return _useRookVariables.useRookVariables;
|
|
70
|
+
}
|
|
71
|
+
});
|
|
66
72
|
var _useRookAndroidBackgroundSteps = require("./useRookAndroidBackgroundSteps");
|
|
67
73
|
var _useRookAppleHealth = require("./useRookAppleHealth");
|
|
68
74
|
var _useRookAppleHealthVariables = require("./useRookAppleHealthVariables");
|
|
@@ -73,4 +79,5 @@ var _useRookHealthConnect = require("./useRookHealthConnect");
|
|
|
73
79
|
var _useRookPermissions = require("./useRookPermissions");
|
|
74
80
|
var _useRookSummaries = require("./useRookSummaries");
|
|
75
81
|
var _useRookSync = require("./useRookSync");
|
|
82
|
+
var _useRookVariables = require("./useRookVariables");
|
|
76
83
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_useRookAndroidBackgroundSteps","require","_useRookAppleHealth","_useRookAppleHealthVariables","_useRookConfiguration","_useRookDataSources","_useRookEvents","_useRookHealthConnect","_useRookPermissions","_useRookSummaries","_useRookSync"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_useRookAndroidBackgroundSteps","require","_useRookAppleHealth","_useRookAppleHealthVariables","_useRookConfiguration","_useRookDataSources","_useRookEvents","_useRookHealthConnect","_useRookPermissions","_useRookSummaries","_useRookSync","_useRookVariables"],"sourceRoot":"../../../src","sources":["hooks/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAAA,8BAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AACA,IAAAE,4BAAA,GAAAF,OAAA;AACA,IAAAG,qBAAA,GAAAH,OAAA;AACA,IAAAI,mBAAA,GAAAJ,OAAA;AACA,IAAAK,cAAA,GAAAL,OAAA;AACA,IAAAM,qBAAA,GAAAN,OAAA;AACA,IAAAO,mBAAA,GAAAP,OAAA;AACA,IAAAQ,iBAAA,GAAAR,OAAA;AACA,IAAAS,YAAA,GAAAT,OAAA;AACA,IAAAU,iBAAA,GAAAV,OAAA","ignoreList":[]}
|
|
@@ -12,6 +12,7 @@ var _isRunningOniOS = require("../utils/isRunningOniOS");
|
|
|
12
12
|
var _nativeModules = _interopRequireDefault(require("../utils/nativeModules"));
|
|
13
13
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
14
14
|
/**
|
|
15
|
+
* @deprecated use instead useRookVariable
|
|
15
16
|
* The `useRookAppleHealthVariable` hook returns an object with a `ready` boolean and an
|
|
16
17
|
* asynchronous function `getTodaySteps` that retrieves the number of steps taken today.
|
|
17
18
|
* @returns The `useRookVariable` hook is returning an object with two properties:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_react","require","_RookSyncGateContext","_getNativeModule","_interopRequireDefault","_isModuleReady","_isRunningOniOS","_nativeModules","e","__esModule","default","useRookAppleHealthVariables","rookSync","useRef","getNativeModule","nativeModules","ios","SYNC","state","ready","useRookSyncGateContext","getTodaySteps","isRunningOniOS","isModuleReady","result","current","exports"],"sourceRoot":"../../../src","sources":["hooks/useRookAppleHealthVariables.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAH,sBAAA,CAAAH,OAAA;AAAmD,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,MAAMC,QAAQ,GAAG,IAAAC,aAAM,EAAC,IAAAC,wBAAe,EAACC,sBAAa,CAACC,GAAG,CAACC,IAAI,CAAC,CAAC;EAChE,MAAM;IACJC,KAAK,EAAE;MAAEC;IAAM;EACjB,CAAC,GAAG,IAAAC,2CAAsB,EAAC,CAAC;;EAE5B;AACF;AACA;AACA;EACE,MAAMC,aAAa,GAAG,MAAAA,CAAA,KAA2B;IAC/C,IAAAC,8BAAc,EAAC,CAAC;IAChB,IAAAC,4BAAa,EAACJ,KAAK,CAAC;IAEpB,MAAMK,MAAM,GAAG,MAAMZ,QAAQ,CAACa,OAAO,CAACJ,aAAa,CAAC,CAAC;IACrD,OAAOG,MAAM;EACf,CAAC;EAED,OAAO;IACLL,KAAK;IACLE;EACF,CAAC;AACH,CAAC;AAACK,OAAA,CAAAf,2BAAA,GAAAA,2BAAA","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_react","require","_RookSyncGateContext","_getNativeModule","_interopRequireDefault","_isModuleReady","_isRunningOniOS","_nativeModules","e","__esModule","default","useRookAppleHealthVariables","rookSync","useRef","getNativeModule","nativeModules","ios","SYNC","state","ready","useRookSyncGateContext","getTodaySteps","isRunningOniOS","isModuleReady","result","current","exports"],"sourceRoot":"../../../src","sources":["hooks/useRookAppleHealthVariables.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,oBAAA,GAAAD,OAAA;AACA,IAAAE,gBAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,cAAA,GAAAJ,OAAA;AACA,IAAAK,eAAA,GAAAL,OAAA;AACA,IAAAM,cAAA,GAAAH,sBAAA,CAAAH,OAAA;AAAmD,SAAAG,uBAAAI,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMG,2BAA2B,GAAGA,CAAA,KAAM;EAC/C,MAAMC,QAAQ,GAAG,IAAAC,aAAM,EAAC,IAAAC,wBAAe,EAACC,sBAAa,CAACC,GAAG,CAACC,IAAI,CAAC,CAAC;EAChE,MAAM;IACJC,KAAK,EAAE;MAAEC;IAAM;EACjB,CAAC,GAAG,IAAAC,2CAAsB,EAAC,CAAC;;EAE5B;AACF;AACA;AACA;EACE,MAAMC,aAAa,GAAG,MAAAA,CAAA,KAA2B;IAC/C,IAAAC,8BAAc,EAAC,CAAC;IAChB,IAAAC,4BAAa,EAACJ,KAAK,CAAC;IAEpB,MAAMK,MAAM,GAAG,MAAMZ,QAAQ,CAACa,OAAO,CAACJ,aAAa,CAAC,CAAC;IACrD,OAAOG,MAAM;EACf,CAAC;EAED,OAAO;IACLL,KAAK;IACLE;EACF,CAAC;AACH,CAAC;AAACK,OAAA,CAAAf,2BAAA,GAAAA,2BAAA","ignoreList":[]}
|