react-native-spike-sdk 4.5.23 → 4.7.13
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 +1 -1
- package/android/src/main/java/com/spikesdk/SpikeMappers.kt +0 -46
- package/android/src/main/java/com/spikesdk/SpikeSdkModule.kt +50 -483
- package/ios/SpikeExceptionMapper.swift +4 -12
- package/ios/SpikeSdk.m +8 -79
- package/ios/SpikeSdk.swift +62 -419
- package/lib/commonjs/Spike.js +1 -57
- package/lib/commonjs/Spike.js.map +1 -1
- package/lib/commonjs/SpikeException.js +15 -94
- package/lib/commonjs/SpikeException.js.map +1 -1
- package/lib/commonjs/index.js +0 -71
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/v3/SpikeRNConnectionAPIv3.js +40 -17
- package/lib/commonjs/v3/SpikeRNConnectionAPIv3.js.map +1 -1
- package/lib/commonjs/version.js +1 -1
- package/lib/module/Spike.js +1 -55
- package/lib/module/Spike.js.map +1 -1
- package/lib/module/SpikeException.js +14 -83
- package/lib/module/SpikeException.js.map +1 -1
- package/lib/module/index.js +3 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/v3/SpikeRNConnectionAPIv3.js +40 -17
- package/lib/module/v3/SpikeRNConnectionAPIv3.js.map +1 -1
- package/lib/module/version.js +1 -1
- package/lib/typescript/Spike.d.ts +2 -29
- package/lib/typescript/Spike.d.ts.map +1 -1
- package/lib/typescript/SpikeException.d.ts +5 -30
- package/lib/typescript/SpikeException.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +6 -25
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/v3/DataModels/BackgroundDeliveryConfig.d.ts +2 -0
- package/lib/typescript/v3/DataModels/BackgroundDeliveryConfig.d.ts.map +1 -1
- package/lib/typescript/v3/SpikeRNConnectionAPIv3.d.ts +34 -9
- package/lib/typescript/v3/SpikeRNConnectionAPIv3.d.ts.map +1 -1
- package/lib/typescript/version.d.ts +1 -1
- package/package.json +2 -2
- package/src/Spike.ts +4 -89
- package/src/SpikeException.ts +13 -96
- package/src/index.ts +2 -61
- package/src/v3/DataModels/BackgroundDeliveryConfig.ts +2 -0
- package/src/v3/SpikeRNConnectionAPIv3.ts +82 -19
- package/src/version.ts +1 -1
- package/android/src/main/java/com/spikesdk/SpikeConnectionLogger.kt +0 -37
- package/ios/SpikeConnectionListener.swift +0 -17
- package/ios/SpikeConnectionLogger.swift +0 -43
- package/ios/SpikeDataTypeMapper.swift +0 -255
- package/lib/commonjs/DataModels/SpikeActivitiesStreamDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeActivitiesStreamDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeActivitiesSummaryDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeActivitiesSummaryDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeBodyDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeBodyDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeBreathingDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeBreathingDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeCaloriesDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeCaloriesDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeData.js +0 -6
- package/lib/commonjs/DataModels/SpikeData.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeDataTypes.js +0 -23
- package/lib/commonjs/DataModels/SpikeDataTypes.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeDistanceDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeDistanceDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeEcgDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeEcgDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeGlucoseDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeGlucoseDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeHeartDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeHeartDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeOxygenSaturationDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeOxygenSaturationDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeSleepDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeSleepDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeStepsDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeStepsDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeStepsIntradayDataEntry.js +0 -2
- package/lib/commonjs/DataModels/SpikeStepsIntradayDataEntry.js.map +0 -1
- package/lib/commonjs/DataModels/SpikeWebhookJob.js +0 -2
- package/lib/commonjs/DataModels/SpikeWebhookJob.js.map +0 -1
- package/lib/commonjs/DataTypes/SpikeDataType.js +0 -59
- package/lib/commonjs/DataTypes/SpikeDataType.js.map +0 -1
- package/lib/commonjs/SpikeBackgroundDeliveriesLogger.js +0 -2
- package/lib/commonjs/SpikeBackgroundDeliveriesLogger.js.map +0 -1
- package/lib/commonjs/SpikeConnection.js +0 -301
- package/lib/commonjs/SpikeConnection.js.map +0 -1
- package/lib/commonjs/SpikeConnectionTypes.js +0 -6
- package/lib/commonjs/SpikeConnectionTypes.js.map +0 -1
- package/lib/commonjs/SpikeLogger.js +0 -6
- package/lib/commonjs/SpikeLogger.js.map +0 -1
- package/lib/module/DataModels/SpikeActivitiesStreamDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeActivitiesStreamDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeActivitiesSummaryDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeActivitiesSummaryDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeBodyDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeBodyDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeBreathingDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeBreathingDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeCaloriesDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeCaloriesDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeData.js +0 -4
- package/lib/module/DataModels/SpikeData.js.map +0 -1
- package/lib/module/DataModels/SpikeDataTypes.js +0 -19
- package/lib/module/DataModels/SpikeDataTypes.js.map +0 -1
- package/lib/module/DataModels/SpikeDistanceDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeDistanceDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeEcgDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeEcgDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeGlucoseDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeGlucoseDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeHeartDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeHeartDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeOxygenSaturationDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeOxygenSaturationDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeSleepDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeSleepDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeStepsDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeStepsDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeStepsIntradayDataEntry.js +0 -2
- package/lib/module/DataModels/SpikeStepsIntradayDataEntry.js.map +0 -1
- package/lib/module/DataModels/SpikeWebhookJob.js +0 -2
- package/lib/module/DataModels/SpikeWebhookJob.js.map +0 -1
- package/lib/module/DataTypes/SpikeDataType.js +0 -42
- package/lib/module/DataTypes/SpikeDataType.js.map +0 -1
- package/lib/module/SpikeBackgroundDeliveriesLogger.js +0 -2
- package/lib/module/SpikeBackgroundDeliveriesLogger.js.map +0 -1
- package/lib/module/SpikeConnection.js +0 -296
- package/lib/module/SpikeConnection.js.map +0 -1
- package/lib/module/SpikeConnectionTypes.js +0 -4
- package/lib/module/SpikeConnectionTypes.js.map +0 -1
- package/lib/module/SpikeLogger.js +0 -4
- package/lib/module/SpikeLogger.js.map +0 -1
- package/lib/typescript/DataModels/SpikeActivitiesStreamDataEntry.d.ts +0 -66
- package/lib/typescript/DataModels/SpikeActivitiesStreamDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeActivitiesSummaryDataEntry.d.ts +0 -29
- package/lib/typescript/DataModels/SpikeActivitiesSummaryDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeBodyDataEntry.d.ts +0 -54
- package/lib/typescript/DataModels/SpikeBodyDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeBreathingDataEntry.d.ts +0 -13
- package/lib/typescript/DataModels/SpikeBreathingDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeCaloriesDataEntry.d.ts +0 -15
- package/lib/typescript/DataModels/SpikeCaloriesDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeData.d.ts +0 -27
- package/lib/typescript/DataModels/SpikeData.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeDataTypes.d.ts +0 -17
- package/lib/typescript/DataModels/SpikeDataTypes.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeDistanceDataEntry.d.ts +0 -13
- package/lib/typescript/DataModels/SpikeDistanceDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeEcgDataEntry.d.ts +0 -13
- package/lib/typescript/DataModels/SpikeEcgDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeGlucoseDataEntry.d.ts +0 -21
- package/lib/typescript/DataModels/SpikeGlucoseDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeHeartDataEntry.d.ts +0 -32
- package/lib/typescript/DataModels/SpikeHeartDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeOxygenSaturationDataEntry.d.ts +0 -15
- package/lib/typescript/DataModels/SpikeOxygenSaturationDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeSleepDataEntry.d.ts +0 -30
- package/lib/typescript/DataModels/SpikeSleepDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeStepsDataEntry.d.ts +0 -13
- package/lib/typescript/DataModels/SpikeStepsDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeStepsIntradayDataEntry.d.ts +0 -17
- package/lib/typescript/DataModels/SpikeStepsIntradayDataEntry.d.ts.map +0 -1
- package/lib/typescript/DataModels/SpikeWebhookJob.d.ts +0 -11
- package/lib/typescript/DataModels/SpikeWebhookJob.d.ts.map +0 -1
- package/lib/typescript/DataTypes/SpikeDataType.d.ts +0 -68
- package/lib/typescript/DataTypes/SpikeDataType.d.ts.map +0 -1
- package/lib/typescript/SpikeBackgroundDeliveriesLogger.d.ts +0 -4
- package/lib/typescript/SpikeBackgroundDeliveriesLogger.d.ts.map +0 -1
- package/lib/typescript/SpikeConnection.d.ts +0 -63
- package/lib/typescript/SpikeConnection.d.ts.map +0 -1
- package/lib/typescript/SpikeConnectionTypes.d.ts +0 -102
- package/lib/typescript/SpikeConnectionTypes.d.ts.map +0 -1
- package/lib/typescript/SpikeLogger.d.ts +0 -13
- package/lib/typescript/SpikeLogger.d.ts.map +0 -1
- package/src/DataModels/SpikeActivitiesStreamDataEntry.ts +0 -67
- package/src/DataModels/SpikeActivitiesSummaryDataEntry.ts +0 -28
- package/src/DataModels/SpikeBodyDataEntry.ts +0 -61
- package/src/DataModels/SpikeBreathingDataEntry.ts +0 -12
- package/src/DataModels/SpikeCaloriesDataEntry.ts +0 -13
- package/src/DataModels/SpikeData.ts +0 -38
- package/src/DataModels/SpikeDataTypes.ts +0 -31
- package/src/DataModels/SpikeDistanceDataEntry.ts +0 -12
- package/src/DataModels/SpikeEcgDataEntry.ts +0 -12
- package/src/DataModels/SpikeGlucoseDataEntry.ts +0 -20
- package/src/DataModels/SpikeHeartDataEntry.ts +0 -34
- package/src/DataModels/SpikeOxygenSaturationDataEntry.ts +0 -14
- package/src/DataModels/SpikeSleepDataEntry.ts +0 -29
- package/src/DataModels/SpikeStepsDataEntry.ts +0 -12
- package/src/DataModels/SpikeStepsIntradayDataEntry.ts +0 -16
- package/src/DataModels/SpikeWebhookJob.ts +0 -10
- package/src/DataTypes/SpikeDataType.ts +0 -93
- package/src/SpikeBackgroundDeliveriesLogger.ts +0 -3
- package/src/SpikeConnection.ts +0 -495
- package/src/SpikeConnectionTypes.ts +0 -124
- package/src/SpikeLogger.ts +0 -14
|
@@ -8,12 +8,8 @@ import androidx.activity.result.contract.ActivityResultContract
|
|
|
8
8
|
import com.facebook.react.bridge.*
|
|
9
9
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
10
10
|
import com.google.gson.GsonBuilder
|
|
11
|
-
import com.spikeapi.SpikeConnection
|
|
12
|
-
import com.spikeapi.SpikeEnvironment
|
|
13
11
|
import com.spikeapi.SpikeExceptions
|
|
14
|
-
import com.spikeapi.SpikeLogger
|
|
15
12
|
import com.spikeapi.SpikePackageChecker
|
|
16
|
-
import com.spikeapi.healthconnect.HealthConnectAvailability
|
|
17
13
|
import com.spikeapi.apiv3.SpikeConnectionAPIv3
|
|
18
14
|
import com.spikeapi.apiv3.datamodels.MetricType
|
|
19
15
|
import com.spikeapi.apiv3.datamodels.ActivityConfig
|
|
@@ -21,10 +17,10 @@ import com.spikeapi.apiv3.datamodels.RecordConfig
|
|
|
21
17
|
import com.spikeapi.apiv3.datamodels.SleepConfig
|
|
22
18
|
import com.spikeapi.apiv3.datamodels.StatisticsType
|
|
23
19
|
import com.spikeapi.apiv3.datamodels.NutritionRecord
|
|
20
|
+
import com.spikeapi.apiv3.datamodels.NutritionalField
|
|
24
21
|
import com.spikeapi.apiv3.datamodels.NutritionalAnalysisConfig
|
|
25
22
|
import com.spikeapi.apiv3.datamodels.NutritionFactsLabelRecognitionConfig
|
|
26
23
|
import com.spikeapi.apiv3.datamodels.NutritionRecordAnalysisMode
|
|
27
|
-
import com.spikeapi.apiv3.datamodels.NutritionalField
|
|
28
24
|
import com.spikeapi.apiv3.datamodels.utils.ActivityConfigUtils
|
|
29
25
|
import com.spikeapi.apiv3.datamodels.utils.SleepConfigUtils
|
|
30
26
|
import com.spikeapi.apiv3.datamodels.utils.StatisticsTypeUtils
|
|
@@ -62,9 +58,6 @@ fun <I, O> ComponentActivity.registerActivityResultLauncher(
|
|
|
62
58
|
class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
63
59
|
ReactContextBaseJavaModule(reactContext), LifecycleEventListener {
|
|
64
60
|
|
|
65
|
-
// Do not use this directly, use `addConnection` and `getConnection` instead
|
|
66
|
-
private val _connections = mutableMapOf<String, SpikeConnection>()
|
|
67
|
-
|
|
68
61
|
private val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate)
|
|
69
62
|
|
|
70
63
|
private val gson = GsonBuilder()
|
|
@@ -73,8 +66,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
73
66
|
OffsetDateTime::class.java,
|
|
74
67
|
OffsetDateTimeSerializer()
|
|
75
68
|
).create()
|
|
76
|
-
private var checkPermissionsFor: Triple<String, Set<String>, Promise>? = null
|
|
77
|
-
|
|
78
69
|
override fun getName(): String {
|
|
79
70
|
return NAME
|
|
80
71
|
}
|
|
@@ -99,443 +90,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
99
90
|
}
|
|
100
91
|
}
|
|
101
92
|
|
|
102
|
-
@ReactMethod
|
|
103
|
-
fun createConnection(
|
|
104
|
-
uuid: String,
|
|
105
|
-
appId: String,
|
|
106
|
-
authToken: String,
|
|
107
|
-
customerEndUserId: String,
|
|
108
|
-
callbackUrl: String?,
|
|
109
|
-
useLogger: Boolean,
|
|
110
|
-
promise: Promise
|
|
111
|
-
) {
|
|
112
|
-
scope.launch {
|
|
113
|
-
try {
|
|
114
|
-
val logger = if (useLogger) {
|
|
115
|
-
createLogger(uuid)
|
|
116
|
-
} else {
|
|
117
|
-
null
|
|
118
|
-
}
|
|
119
|
-
addConnection(connection = SpikeConnection.createConnection(
|
|
120
|
-
context = reactApplicationContext,
|
|
121
|
-
authToken = authToken,
|
|
122
|
-
customerEndUserId = customerEndUserId,
|
|
123
|
-
appId = appId,
|
|
124
|
-
callbackUrl = callbackUrl,
|
|
125
|
-
env = SpikeEnvironment.PROD,
|
|
126
|
-
logger = logger,
|
|
127
|
-
), uuid = uuid)
|
|
128
|
-
promise.resolve(uuid)
|
|
129
|
-
} catch (e: SpikeExceptions) {
|
|
130
|
-
promise.reject(e.mapException(), e.message)
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
@ReactMethod
|
|
136
|
-
fun getAppId(uuid: String, promise: Promise) {
|
|
137
|
-
scope.launch {
|
|
138
|
-
try {
|
|
139
|
-
val connection = getConnection(uuid) ?: return@launch promise.reject(
|
|
140
|
-
SpikeExceptions.SpikeException(
|
|
141
|
-
"Connection not found"
|
|
142
|
-
).mapException(), "Connection not found"
|
|
143
|
-
)
|
|
144
|
-
val appId = connection.getAppId()
|
|
145
|
-
promise.resolve(appId)
|
|
146
|
-
} catch (e: SpikeExceptions) {
|
|
147
|
-
promise.reject(e.mapException(), e.message)
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
@ReactMethod
|
|
153
|
-
fun getSpikeEndUserId(uuid: String, promise: Promise) {
|
|
154
|
-
scope.launch {
|
|
155
|
-
try {
|
|
156
|
-
val connection = getConnection(uuid) ?: return@launch promise.reject(
|
|
157
|
-
SpikeExceptions.SpikeException(
|
|
158
|
-
"Connection not found"
|
|
159
|
-
).mapException(), "Connection not found"
|
|
160
|
-
)
|
|
161
|
-
val spikeEndUserId = connection.getSpikeUserId()
|
|
162
|
-
promise.resolve(spikeEndUserId)
|
|
163
|
-
} catch (e: SpikeExceptions) {
|
|
164
|
-
promise.reject(e.mapException(), e.message)
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
@ReactMethod
|
|
170
|
-
fun getCustomerEndUserId(uuid: String, promise: Promise) {
|
|
171
|
-
scope.launch {
|
|
172
|
-
try {
|
|
173
|
-
val connection = getConnection(uuid) ?: return@launch promise.reject(
|
|
174
|
-
SpikeExceptions.SpikeException(
|
|
175
|
-
"Connection not found"
|
|
176
|
-
).mapException(), "Connection not found"
|
|
177
|
-
)
|
|
178
|
-
val customerEndUserId = connection.getCustomerUserId()
|
|
179
|
-
promise.resolve(customerEndUserId)
|
|
180
|
-
} catch (e: SpikeExceptions) {
|
|
181
|
-
promise.reject(e.mapException(), e.message)
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
@ReactMethod
|
|
187
|
-
fun getCallbackUrl(uuid: String, promise: Promise) {
|
|
188
|
-
scope.launch {
|
|
189
|
-
try {
|
|
190
|
-
val connection = getConnection(uuid) ?: return@launch promise.reject(
|
|
191
|
-
SpikeExceptions.SpikeException(
|
|
192
|
-
"Connection not found"
|
|
193
|
-
).mapException(), "Connection not found"
|
|
194
|
-
)
|
|
195
|
-
val callbackUrl = connection.getPostbackUrl()
|
|
196
|
-
promise.resolve(callbackUrl)
|
|
197
|
-
} catch (e: SpikeExceptions) {
|
|
198
|
-
promise.reject(e.mapException(), e.message)
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
@ReactMethod
|
|
205
|
-
fun close(uuid: String, promise: Promise) {
|
|
206
|
-
scope.launch {
|
|
207
|
-
try {
|
|
208
|
-
val connection = getConnection(uuid) ?: return@launch promise.reject(
|
|
209
|
-
SpikeExceptions.SpikeException(
|
|
210
|
-
"Connection not found"
|
|
211
|
-
).mapException(), "Connection not found"
|
|
212
|
-
)
|
|
213
|
-
connection.close()
|
|
214
|
-
promise.resolve(true)
|
|
215
|
-
} catch (e: SpikeExceptions) {
|
|
216
|
-
promise.reject(e.mapException(), e.message)
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
@ReactMethod
|
|
222
|
-
fun extractDataInRange(
|
|
223
|
-
connectionUUID: String,
|
|
224
|
-
dataType: String,
|
|
225
|
-
fromDateMillis: Double,
|
|
226
|
-
toDateMillis: Double,
|
|
227
|
-
promise: Promise
|
|
228
|
-
) {
|
|
229
|
-
scope.launch {
|
|
230
|
-
try {
|
|
231
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
232
|
-
SpikeExceptions.SpikeException(
|
|
233
|
-
"Connection not found"
|
|
234
|
-
).mapException(), "Connection not found"
|
|
235
|
-
)
|
|
236
|
-
val result = connection.extractData(
|
|
237
|
-
dataType = dataType.toSpikeDataType(),
|
|
238
|
-
from = fromDateMillis.toLong().millisToOffsetDataTime(),
|
|
239
|
-
to = toDateMillis.toLong().millisToOffsetDataTime()
|
|
240
|
-
)
|
|
241
|
-
promise.resolve(gson.toJson(result))
|
|
242
|
-
} catch (e: SpikeExceptions) {
|
|
243
|
-
promise.reject(e.mapException(), e.message)
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
@ReactMethod
|
|
249
|
-
fun extractAndPostDataInRange(
|
|
250
|
-
connectionUUID: String,
|
|
251
|
-
dataType: String,
|
|
252
|
-
fromDateMillis: Double,
|
|
253
|
-
toDateMillis: Double,
|
|
254
|
-
promise: Promise
|
|
255
|
-
) {
|
|
256
|
-
scope.launch {
|
|
257
|
-
try {
|
|
258
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
259
|
-
SpikeExceptions.SpikeException(
|
|
260
|
-
"Connection not found"
|
|
261
|
-
).mapException(), "Connection not found"
|
|
262
|
-
)
|
|
263
|
-
val result = connection.extractAndPostData(
|
|
264
|
-
dataType = dataType.toSpikeDataType(),
|
|
265
|
-
from = fromDateMillis.toLong().millisToOffsetDataTime(),
|
|
266
|
-
to = toDateMillis.toLong().millisToOffsetDataTime()
|
|
267
|
-
)
|
|
268
|
-
promise.resolve(gson.toJson(result))
|
|
269
|
-
} catch (e: SpikeExceptions) {
|
|
270
|
-
promise.reject(e.mapException(), e.message)
|
|
271
|
-
}
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
|
|
275
|
-
@ReactMethod
|
|
276
|
-
fun extractData(
|
|
277
|
-
connectionUUID: String,
|
|
278
|
-
dataType: String,
|
|
279
|
-
promise: Promise
|
|
280
|
-
) {
|
|
281
|
-
scope.launch {
|
|
282
|
-
try {
|
|
283
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
284
|
-
SpikeExceptions.SpikeException(
|
|
285
|
-
"Connection not found"
|
|
286
|
-
).mapException(), "Connection not found"
|
|
287
|
-
)
|
|
288
|
-
val result = connection.extractData(
|
|
289
|
-
dataType = dataType.toSpikeDataType()
|
|
290
|
-
)
|
|
291
|
-
promise.resolve(gson.toJson(result))
|
|
292
|
-
} catch (e: SpikeExceptions) {
|
|
293
|
-
promise.reject(e.mapException(), e.message)
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
@ReactMethod
|
|
299
|
-
fun extractAndPostData(
|
|
300
|
-
connectionUUID: String,
|
|
301
|
-
dataType: String,
|
|
302
|
-
promise: Promise
|
|
303
|
-
) {
|
|
304
|
-
scope.launch {
|
|
305
|
-
try {
|
|
306
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
307
|
-
SpikeExceptions.SpikeException(
|
|
308
|
-
"Connection not found"
|
|
309
|
-
).mapException(), "Connection not found"
|
|
310
|
-
)
|
|
311
|
-
val result = connection.extractAndPostData(
|
|
312
|
-
dataType = dataType.toSpikeDataType()
|
|
313
|
-
)
|
|
314
|
-
promise.resolve(gson.toJson(result))
|
|
315
|
-
} catch (e: SpikeExceptions) {
|
|
316
|
-
promise.reject(e.mapException(), e.message)
|
|
317
|
-
}
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
@ReactMethod
|
|
322
|
-
fun manageHealthConnect(connectionUUID: String, promise: Promise) {
|
|
323
|
-
scope.launch {
|
|
324
|
-
try {
|
|
325
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
326
|
-
SpikeExceptions.SpikeException(
|
|
327
|
-
"Connection not found"
|
|
328
|
-
).mapException(), "Connection not found"
|
|
329
|
-
)
|
|
330
|
-
connection.manageHealthConnect()
|
|
331
|
-
promise.resolve(true)
|
|
332
|
-
} catch (e: SpikeExceptions) {
|
|
333
|
-
promise.reject(e.mapException(), e.message)
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
@ReactMethod
|
|
339
|
-
fun checkPermissionsGranted(connectionUUID: String, dataType: String, promise: Promise) {
|
|
340
|
-
scope.launch {
|
|
341
|
-
try {
|
|
342
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
343
|
-
SpikeExceptions.SpikeException(
|
|
344
|
-
"Connection not found"
|
|
345
|
-
).mapException(), "Connection not found"
|
|
346
|
-
)
|
|
347
|
-
val requiredPermissions = connection.getRequiredHealthPermissionsMetadata(
|
|
348
|
-
dataType.toSpikeDataType()
|
|
349
|
-
)
|
|
350
|
-
val permissionsGranted: Boolean =
|
|
351
|
-
connection.hasHealthPermissionsGranted(requiredPermissions)
|
|
352
|
-
promise.resolve(permissionsGranted)
|
|
353
|
-
} catch (e: SpikeExceptions) {
|
|
354
|
-
promise.reject(e.mapException(), e.message)
|
|
355
|
-
}
|
|
356
|
-
}
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
@ReactMethod
|
|
360
|
-
fun getHealthConnectAvailability(connectionUUID: String, promise: Promise) {
|
|
361
|
-
scope.launch {
|
|
362
|
-
try {
|
|
363
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
364
|
-
SpikeExceptions.SpikeException(
|
|
365
|
-
"Connection not found"
|
|
366
|
-
).mapException(), "Connection not found"
|
|
367
|
-
)
|
|
368
|
-
val availability = connection.getHealthConnectAvailability()
|
|
369
|
-
promise.resolve(availability.toStringType())
|
|
370
|
-
} catch (e: SpikeExceptions) {
|
|
371
|
-
promise.reject(e.mapException(), e.message)
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
@ReactMethod
|
|
377
|
-
fun revokeAllPermissions(connectionUUID: String, promise: Promise) {
|
|
378
|
-
scope.launch {
|
|
379
|
-
try {
|
|
380
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
381
|
-
SpikeExceptions.SpikeException(
|
|
382
|
-
"Connection not found"
|
|
383
|
-
).mapException(), "Connection not found"
|
|
384
|
-
)
|
|
385
|
-
connection.revokeAllPermissions()
|
|
386
|
-
promise.resolve(true)
|
|
387
|
-
} catch (e: SpikeExceptions) {
|
|
388
|
-
promise.reject(e.mapException(), e.message)
|
|
389
|
-
}
|
|
390
|
-
}
|
|
391
|
-
}
|
|
392
|
-
|
|
393
|
-
@ReactMethod
|
|
394
|
-
fun requestHealthPermissions(connectionUUID: String, dataType: String, promise: Promise) {
|
|
395
|
-
scope.launch {
|
|
396
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
397
|
-
SpikeExceptions.SpikeException(
|
|
398
|
-
"Connection not found"
|
|
399
|
-
).mapException(), "Connection not found"
|
|
400
|
-
)
|
|
401
|
-
|
|
402
|
-
val permissions =
|
|
403
|
-
connection.getRequiredHealthPermissionsMetadata(dataType.toSpikeDataType())
|
|
404
|
-
|
|
405
|
-
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.TIRAMISU) {
|
|
406
|
-
val intent = SpikeConnection.requestReadAuthorization().createIntent(
|
|
407
|
-
reactApplicationContext, permissions
|
|
408
|
-
)
|
|
409
|
-
|
|
410
|
-
val availability = connection.getHealthConnectAvailability()
|
|
411
|
-
if (availability == HealthConnectAvailability.INSTALLED) {
|
|
412
|
-
reactApplicationContext.currentActivity?.startActivityForResult(
|
|
413
|
-
intent,
|
|
414
|
-
REQUEST_CODE
|
|
415
|
-
)
|
|
416
|
-
promise.resolve(true)
|
|
417
|
-
} else {
|
|
418
|
-
promise.reject(
|
|
419
|
-
SpikeExceptions.SpikeException().mapException(),
|
|
420
|
-
SpikeExceptions.SpikeException().message
|
|
421
|
-
)
|
|
422
|
-
}
|
|
423
|
-
} else {
|
|
424
|
-
val activity = reactApplicationContext.currentActivity
|
|
425
|
-
if (activity is ComponentActivity) {
|
|
426
|
-
checkPermissionsFor = Triple(connectionUUID, setOf(dataType), promise)
|
|
427
|
-
val launcher =
|
|
428
|
-
activity.registerActivityResultLauncher(
|
|
429
|
-
SpikeConnection.requestReadAuthorization()
|
|
430
|
-
) {
|
|
431
|
-
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
if (permissions.isNotEmpty()) {
|
|
435
|
-
launcher.launch(permissions)
|
|
436
|
-
} else {
|
|
437
|
-
promise.resolve(false)
|
|
438
|
-
}
|
|
439
|
-
} else {
|
|
440
|
-
promise.resolve(false)
|
|
441
|
-
}
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
}
|
|
445
|
-
|
|
446
|
-
@ReactMethod
|
|
447
|
-
fun requestMultipleHealthPermissions(connectionUUID: String, dataTypes: ReadableArray, promise: Promise) {
|
|
448
|
-
scope.launch {
|
|
449
|
-
val connection = getConnection(connectionUUID) ?: return@launch promise.reject(
|
|
450
|
-
SpikeExceptions.SpikeException(
|
|
451
|
-
"Connection not found"
|
|
452
|
-
).mapException(), "Connection not found"
|
|
453
|
-
)
|
|
454
|
-
|
|
455
|
-
val permissions = mutableSetOf<String>()
|
|
456
|
-
dataTypes.toArrayList().forEach {
|
|
457
|
-
connection.getRequiredHealthPermissionsMetadata((it as String).toSpikeDataType())
|
|
458
|
-
.forEach {
|
|
459
|
-
permissions.add(it)
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.TIRAMISU) {
|
|
464
|
-
val availability = connection.getHealthConnectAvailability()
|
|
465
|
-
if (permissions.isNotEmpty() && availability == HealthConnectAvailability.INSTALLED) {
|
|
466
|
-
val intent = SpikeConnection.requestReadAuthorization().createIntent(
|
|
467
|
-
reactApplicationContext, permissions
|
|
468
|
-
)
|
|
469
|
-
|
|
470
|
-
reactApplicationContext.currentActivity?.startActivityForResult(
|
|
471
|
-
intent,
|
|
472
|
-
REQUEST_CODE
|
|
473
|
-
)
|
|
474
|
-
promise.resolve(true)
|
|
475
|
-
} else {
|
|
476
|
-
promise.reject(
|
|
477
|
-
SpikeExceptions.SpikeException().mapException(),
|
|
478
|
-
SpikeExceptions.SpikeException().message
|
|
479
|
-
)
|
|
480
|
-
}
|
|
481
|
-
} else {
|
|
482
|
-
val activity = reactApplicationContext.currentActivity
|
|
483
|
-
if (activity is ComponentActivity) {
|
|
484
|
-
checkPermissionsFor = Triple(
|
|
485
|
-
connectionUUID,
|
|
486
|
-
dataTypes.toArrayList().toSet() as Set<String>,
|
|
487
|
-
promise
|
|
488
|
-
)
|
|
489
|
-
val launcher =
|
|
490
|
-
activity.registerActivityResultLauncher(
|
|
491
|
-
SpikeConnection.requestReadAuthorization()
|
|
492
|
-
) {
|
|
493
|
-
|
|
494
|
-
}
|
|
495
|
-
if (permissions.isNotEmpty()) {
|
|
496
|
-
launcher.launch(permissions)
|
|
497
|
-
} else {
|
|
498
|
-
promise.reject(
|
|
499
|
-
SpikeExceptions.SpikeException().mapException(),
|
|
500
|
-
SpikeExceptions.SpikeException().message
|
|
501
|
-
)
|
|
502
|
-
}
|
|
503
|
-
} else {
|
|
504
|
-
promise.resolve(false)
|
|
505
|
-
}
|
|
506
|
-
}
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
private fun createLogger(connectionUUID: String): SpikeLogger {
|
|
511
|
-
return SpikeConnectionLogger(connectionUUID) { _, logLevel, message ->
|
|
512
|
-
val body = WritableNativeMap().apply {
|
|
513
|
-
putString("connectionUUID", connectionUUID)
|
|
514
|
-
putString("message", message)
|
|
515
|
-
}
|
|
516
|
-
|
|
517
|
-
when (logLevel) {
|
|
518
|
-
SpikeLogLevel.DEBUG -> sendEvent(
|
|
519
|
-
reactContext = reactApplicationContext,
|
|
520
|
-
eventName = logLevel.jsEventName,
|
|
521
|
-
params = body
|
|
522
|
-
)
|
|
523
|
-
|
|
524
|
-
SpikeLogLevel.ERROR -> sendEvent(
|
|
525
|
-
reactContext = reactApplicationContext,
|
|
526
|
-
eventName = logLevel.jsEventName,
|
|
527
|
-
params = body
|
|
528
|
-
)
|
|
529
|
-
|
|
530
|
-
SpikeLogLevel.INFO -> sendEvent(
|
|
531
|
-
reactContext = reactApplicationContext,
|
|
532
|
-
eventName = logLevel.jsEventName,
|
|
533
|
-
params = body
|
|
534
|
-
)
|
|
535
|
-
}
|
|
536
|
-
}
|
|
537
|
-
}
|
|
538
|
-
|
|
539
93
|
private fun sendEvent(reactContext: ReactContext, eventName: String, params: WritableMap?) {
|
|
540
94
|
reactContext
|
|
541
95
|
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
@@ -543,19 +97,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
543
97
|
}
|
|
544
98
|
|
|
545
99
|
override fun onHostResume() {
|
|
546
|
-
// Old SDK
|
|
547
|
-
checkPermissionsFor?.let {
|
|
548
|
-
it.second.forEach { permission ->
|
|
549
|
-
checkPermissionsGranted(
|
|
550
|
-
it.first,
|
|
551
|
-
permission,
|
|
552
|
-
it.third
|
|
553
|
-
)
|
|
554
|
-
}
|
|
555
|
-
}
|
|
556
|
-
checkPermissionsFor = null
|
|
557
|
-
|
|
558
|
-
// New SDK V3
|
|
559
100
|
checkPermissionsForV3?.let {
|
|
560
101
|
areAllPermissionsGranted(it.first, it.second, it.third)
|
|
561
102
|
}
|
|
@@ -572,25 +113,9 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
572
113
|
const val REQUEST_CODE = 4200
|
|
573
114
|
}
|
|
574
115
|
|
|
575
|
-
//
|
|
116
|
+
// ------------------------- V3 -------------------------
|
|
576
117
|
|
|
577
118
|
private val mutex = Mutex()
|
|
578
|
-
|
|
579
|
-
// Add new connection to the dictionary in a thread-safe manner
|
|
580
|
-
private suspend fun addConnection(connection: SpikeConnection, uuid: String) {
|
|
581
|
-
mutex.withLock {
|
|
582
|
-
_connections[uuid] = connection
|
|
583
|
-
}
|
|
584
|
-
}
|
|
585
|
-
|
|
586
|
-
// Synchronised read for safe multithreaded usage
|
|
587
|
-
private suspend fun getConnection(uuid: String): SpikeConnection? {
|
|
588
|
-
mutex.withLock {
|
|
589
|
-
return _connections[uuid]
|
|
590
|
-
}
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
// ------------------------- V3 -------------------------
|
|
594
119
|
|
|
595
120
|
@ReactMethod
|
|
596
121
|
fun setWrapper(type: String, version: String) {
|
|
@@ -675,6 +200,17 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
675
200
|
}
|
|
676
201
|
}
|
|
677
202
|
|
|
203
|
+
@ReactMethod
|
|
204
|
+
fun closeV3(connectionUUID: String, promise: Promise) {
|
|
205
|
+
executeV3MethodWithConnection("closeV3", connectionUUID, promise) { connection ->
|
|
206
|
+
connection.close()
|
|
207
|
+
mutex.withLock {
|
|
208
|
+
_connectionsV3.remove(connectionUUID)
|
|
209
|
+
}
|
|
210
|
+
promise.resolve(true)
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
678
214
|
/// --- Read user info ---
|
|
679
215
|
|
|
680
216
|
@ReactMethod
|
|
@@ -915,6 +451,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
915
451
|
metricTypes: ReadableArray,
|
|
916
452
|
activityConfigs: ReadableArray,
|
|
917
453
|
sleepConfigs: ReadableArray,
|
|
454
|
+
nutritionalFields: ReadableArray,
|
|
918
455
|
includeEnhancedPermissions: Boolean,
|
|
919
456
|
includeBackgroundDelivery: Boolean,
|
|
920
457
|
promise: Promise
|
|
@@ -941,12 +478,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
941
478
|
SleepConfigUtils.fromValue(it as String)
|
|
942
479
|
}.toSet()
|
|
943
480
|
|
|
481
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
482
|
+
|
|
944
483
|
val permissions = permissionManager
|
|
945
484
|
.getPermissions(
|
|
946
485
|
statisticsTypes = statTypes,
|
|
947
486
|
metricTypes = mTypes,
|
|
948
487
|
activityConfigs = aConfigs,
|
|
949
488
|
sleepConfigs = sConfigs,
|
|
489
|
+
nutritionalFields = nFields,
|
|
950
490
|
includeEnhancedPermissions = includeEnhancedPermissions,
|
|
951
491
|
includeBackgroundDelivery = includeBackgroundDelivery
|
|
952
492
|
)
|
|
@@ -1090,6 +630,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1090
630
|
metricTypes: ReadableArray,
|
|
1091
631
|
activityConfigs: ReadableArray,
|
|
1092
632
|
sleepConfigs: ReadableArray,
|
|
633
|
+
nutritionalFields: ReadableArray,
|
|
1093
634
|
promise: Promise
|
|
1094
635
|
) {
|
|
1095
636
|
executeV3MethodWithConnection("enableBackgroundDelivery", connectionUUID, promise) { connection ->
|
|
@@ -1116,11 +657,14 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1116
657
|
SleepConfigUtils.fromValue(it as String)
|
|
1117
658
|
}.toSet()
|
|
1118
659
|
|
|
660
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
661
|
+
|
|
1119
662
|
connection.enableBackgroundDelivery(
|
|
1120
663
|
statisticsTypes = statTypes,
|
|
1121
664
|
metricTypes = mTypes,
|
|
1122
665
|
activityConfigs = aConfigs,
|
|
1123
|
-
sleepConfigs = sConfigs
|
|
666
|
+
sleepConfigs = sConfigs,
|
|
667
|
+
nutritionalFields = nFields
|
|
1124
668
|
)
|
|
1125
669
|
|
|
1126
670
|
promise.resolve(true)
|
|
@@ -1134,6 +678,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1134
678
|
metricTypes: ReadableArray,
|
|
1135
679
|
activityConfigs: ReadableArray,
|
|
1136
680
|
sleepConfigs: ReadableArray,
|
|
681
|
+
nutritionalFields: ReadableArray,
|
|
1137
682
|
days: String?,
|
|
1138
683
|
promise: Promise
|
|
1139
684
|
) {
|
|
@@ -1154,12 +699,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1154
699
|
SleepConfigUtils.fromValue(it as String)
|
|
1155
700
|
}.toSet()
|
|
1156
701
|
|
|
702
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
703
|
+
|
|
1157
704
|
connection.backfill(
|
|
1158
705
|
days = days?.toIntOrNull(),
|
|
1159
706
|
statisticsTypes = statTypes,
|
|
1160
707
|
metricTypes = mTypes,
|
|
1161
708
|
activityConfigs = aConfigs,
|
|
1162
|
-
sleepConfigs = sConfigs
|
|
709
|
+
sleepConfigs = sConfigs,
|
|
710
|
+
nutritionalFields = nFields
|
|
1163
711
|
)
|
|
1164
712
|
|
|
1165
713
|
promise.resolve(true)
|
|
@@ -1204,6 +752,13 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1204
752
|
}
|
|
1205
753
|
}
|
|
1206
754
|
|
|
755
|
+
private fun makeNutritionalFields(nutritionalFields: ReadableArray): Set<NutritionalField> {
|
|
756
|
+
return nutritionalFields.toArrayList().mapNotNull { item ->
|
|
757
|
+
val value = item as? String ?: return@mapNotNull null
|
|
758
|
+
NutritionalField.values().find { it.value == value }
|
|
759
|
+
}.toSet()
|
|
760
|
+
}
|
|
761
|
+
|
|
1207
762
|
/// --- Private stuff ---
|
|
1208
763
|
|
|
1209
764
|
// Do not use this directly, use `addConnection` and `getConnection` instead
|
|
@@ -1336,6 +891,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1336
891
|
metricTypes: ReadableArray,
|
|
1337
892
|
activityConfigs: ReadableArray,
|
|
1338
893
|
sleepConfigs: ReadableArray,
|
|
894
|
+
nutritionalFields: ReadableArray,
|
|
1339
895
|
promise: Promise
|
|
1340
896
|
) {
|
|
1341
897
|
executeV3MethodWithConnection("getSamsungHealthDataPermissions", connectionUUID, promise) { connection ->
|
|
@@ -1360,12 +916,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1360
916
|
SleepConfigUtils.fromValue(it as String)
|
|
1361
917
|
}.toSet()
|
|
1362
918
|
|
|
919
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
920
|
+
|
|
1363
921
|
val permissions = permissionManager
|
|
1364
922
|
.getPermissions(
|
|
1365
923
|
statisticsTypes = statTypes,
|
|
1366
924
|
metricTypes = mTypes,
|
|
1367
925
|
activityConfigs = aConfigs,
|
|
1368
|
-
sleepConfigs = sConfigs
|
|
926
|
+
sleepConfigs = sConfigs,
|
|
927
|
+
nutritionalFields = nFields
|
|
1369
928
|
)
|
|
1370
929
|
|
|
1371
930
|
val result = Arguments.createArray()
|
|
@@ -1384,6 +943,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1384
943
|
metricTypes: ReadableArray,
|
|
1385
944
|
activityConfigs: ReadableArray,
|
|
1386
945
|
sleepConfigs: ReadableArray,
|
|
946
|
+
nutritionalFields: ReadableArray,
|
|
1387
947
|
promise: Promise
|
|
1388
948
|
) {
|
|
1389
949
|
executeV3MethodWithConnection("requestPermissionsFromSamsungHealthData", connectionUUID, promise) { connection ->
|
|
@@ -1408,8 +968,10 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1408
968
|
val sConfigs = sleepConfigs.toArrayList().mapNotNull {
|
|
1409
969
|
SleepConfigUtils.fromValue(it as String)
|
|
1410
970
|
}.toSet()
|
|
1411
|
-
|
|
1412
|
-
|
|
971
|
+
|
|
972
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
973
|
+
|
|
974
|
+
Log.d("SpikeSdkModule", "Will ask for Samsung Health Data permissions with: statTypes=$statTypes, metricTypes=$mTypes, activityConfigs=$aConfigs, sleepConfigs=$sConfigs, nutritionalFields=$nFields")
|
|
1413
975
|
|
|
1414
976
|
val activity = reactApplicationContext.currentActivity
|
|
1415
977
|
if (activity == null) {
|
|
@@ -1421,7 +983,8 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1421
983
|
statisticsTypes = statTypes,
|
|
1422
984
|
metricTypes = mTypes,
|
|
1423
985
|
activityConfigs = aConfigs,
|
|
1424
|
-
sleepConfigs = sConfigs
|
|
986
|
+
sleepConfigs = sConfigs,
|
|
987
|
+
nutritionalFields = nFields
|
|
1425
988
|
)
|
|
1426
989
|
|
|
1427
990
|
val result = Arguments.createArray()
|
|
@@ -1443,6 +1006,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1443
1006
|
metricTypes: ReadableArray,
|
|
1444
1007
|
activityConfigs: ReadableArray,
|
|
1445
1008
|
sleepConfigs: ReadableArray,
|
|
1009
|
+
nutritionalFields: ReadableArray,
|
|
1446
1010
|
days: String?,
|
|
1447
1011
|
promise: Promise
|
|
1448
1012
|
) {
|
|
@@ -1468,12 +1032,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
1468
1032
|
SleepConfigUtils.fromValue(it as String)
|
|
1469
1033
|
}.toSet()
|
|
1470
1034
|
|
|
1035
|
+
val nFields = makeNutritionalFields(nutritionalFields)
|
|
1036
|
+
|
|
1471
1037
|
connection.requestPermissionsFromSamsungHealthDataAndBackfill(
|
|
1472
1038
|
activity = activity,
|
|
1473
1039
|
statisticsTypes = statTypes,
|
|
1474
1040
|
metricTypes = mTypes,
|
|
1475
1041
|
activityConfigs = aConfigs,
|
|
1476
1042
|
sleepConfigs = sConfigs,
|
|
1043
|
+
nutritionalFields = nFields,
|
|
1477
1044
|
backfillDays = days?.toIntOrNull()
|
|
1478
1045
|
)
|
|
1479
1046
|
|