react-native-spike-sdk 4.6.13 → 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 +1 -476
- package/ios/SpikeExceptionMapper.swift +4 -12
- package/ios/SpikeSdk.m +0 -79
- package/ios/SpikeSdk.swift +7 -417
- 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/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/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 +4 -24
- package/lib/typescript/index.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 +0 -61
- 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
package/android/build.gradle
CHANGED
|
@@ -76,7 +76,7 @@ dependencies {
|
|
|
76
76
|
//noinspection GradleDynamicVersion
|
|
77
77
|
implementation "com.facebook.react:react-android:0.71.3"
|
|
78
78
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
79
|
-
implementation 'com.spikeapi.sdk:spike-sdk:4.
|
|
79
|
+
implementation 'com.spikeapi.sdk:spike-sdk:4.7.12'
|
|
80
80
|
implementation 'androidx.core:core-ktx:1.9.0'
|
|
81
81
|
implementation 'androidx.lifecycle:lifecycle-runtime-ktx:2.5.1'
|
|
82
82
|
implementation 'com.google.code.gson:gson:2.10.1'
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
package com.spikesdk
|
|
2
2
|
|
|
3
|
-
import com.spikeapi.SpikeDataTypes
|
|
4
3
|
import com.spikeapi.SpikeExceptions
|
|
5
|
-
import com.spikeapi.healthconnect.HealthConnectAvailability
|
|
6
|
-
import com.spikeapi.model.SpikeData
|
|
7
|
-
import com.spikeapi.model.SpikeDataType
|
|
8
|
-
import java.time.Instant
|
|
9
|
-
import java.time.OffsetDateTime
|
|
10
4
|
|
|
11
5
|
fun SpikeExceptions.mapException(): String {
|
|
12
6
|
return when (this) {
|
|
@@ -20,43 +14,3 @@ fun SpikeExceptions.mapException(): String {
|
|
|
20
14
|
else -> "SpikeException"
|
|
21
15
|
}
|
|
22
16
|
}
|
|
23
|
-
|
|
24
|
-
fun SpikeDataType<out SpikeData>.toStringType(): String = when (this) {
|
|
25
|
-
SpikeDataTypes.GLUCOSE -> "glucose"
|
|
26
|
-
SpikeDataTypes.HEART_RATE -> "heart"
|
|
27
|
-
SpikeDataTypes.SLEEP -> "sleep"
|
|
28
|
-
SpikeDataTypes.STEPS -> "steps"
|
|
29
|
-
SpikeDataTypes.STEPS_INTRADAY -> "steps_intraday"
|
|
30
|
-
SpikeDataTypes.ACTIVITIES_STREAM -> "activities_stream"
|
|
31
|
-
SpikeDataTypes.ACTIVITIES_SUMMARY -> "activities_summary"
|
|
32
|
-
SpikeDataTypes.BREATHING -> "breathing"
|
|
33
|
-
SpikeDataTypes.CALORIES -> "calories"
|
|
34
|
-
SpikeDataTypes.DISTANCE -> "distance"
|
|
35
|
-
SpikeDataTypes.OXYGEN_SATURATION -> "oxygen_saturation"
|
|
36
|
-
SpikeDataTypes.BODY -> "body"
|
|
37
|
-
else -> "activities_summary"
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
fun String.toSpikeDataType(): SpikeDataType<out SpikeData> = when (this) {
|
|
41
|
-
"glucose" -> SpikeDataTypes.GLUCOSE
|
|
42
|
-
"heart" -> SpikeDataTypes.HEART_RATE
|
|
43
|
-
"sleep" -> SpikeDataTypes.SLEEP
|
|
44
|
-
"steps" -> SpikeDataTypes.STEPS
|
|
45
|
-
"steps_intraday" -> SpikeDataTypes.STEPS_INTRADAY
|
|
46
|
-
"activities_stream" -> SpikeDataTypes.ACTIVITIES_STREAM
|
|
47
|
-
"activities_summary" -> SpikeDataTypes.ACTIVITIES_SUMMARY
|
|
48
|
-
"breathing" -> SpikeDataTypes.BREATHING
|
|
49
|
-
"calories" -> SpikeDataTypes.CALORIES
|
|
50
|
-
"distance" -> SpikeDataTypes.DISTANCE
|
|
51
|
-
"oxygen_saturation" -> SpikeDataTypes.OXYGEN_SATURATION
|
|
52
|
-
"body" -> SpikeDataTypes.BODY
|
|
53
|
-
else -> SpikeDataTypes.ACTIVITIES_SUMMARY
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
fun Long.millisToOffsetDataTime(): OffsetDateTime =
|
|
57
|
-
OffsetDateTime.ofInstant(Instant.ofEpochMilli(this), java.time.ZoneId.systemDefault())
|
|
58
|
-
|
|
59
|
-
fun HealthConnectAvailability.toStringType(): String = when (this) {
|
|
60
|
-
HealthConnectAvailability.INSTALLED -> "installed"
|
|
61
|
-
HealthConnectAvailability.NOT_INSTALLED -> "notInstalled"
|
|
62
|
-
}
|
|
@@ -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
|
|
@@ -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) {
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import Foundation
|
|
2
|
+
import BackgroundTasks
|
|
2
3
|
import SpikeSDK
|
|
4
|
+
import SwiftUI
|
|
3
5
|
|
|
4
6
|
class SpikeConnectionNotFoundException: Error, Codable {}
|
|
5
7
|
class SpikeDataExtractionException: Error, Codable {}
|
|
@@ -11,26 +13,16 @@ class SpikeExceptionMapper {
|
|
|
11
13
|
/// in `src/SpikeException.ts`
|
|
12
14
|
static func extractErrorCode(_ error: Error) -> String {
|
|
13
15
|
switch error {
|
|
14
|
-
case is SpikeConnectionIsClosedException:
|
|
15
|
-
return "SpikeConnectionIsClosedException"
|
|
16
16
|
case is SpikeInvalidCredentialsException:
|
|
17
17
|
return "SpikeInvalidCredentialsException"
|
|
18
|
-
case is SpikeInvalidDateRangeException:
|
|
19
|
-
return "SpikeInvalidDateRangeException"
|
|
20
|
-
case is SpikeInvalidCallbackUrlException:
|
|
21
|
-
return "SpikeInvalidCallbackUrlException"
|
|
22
|
-
case is SpikePackException:
|
|
23
|
-
return "SpikePackException"
|
|
24
18
|
case is SpikePermissionsNotGrantedException:
|
|
25
19
|
return "SpikePermissionsNotGrantedException"
|
|
26
20
|
case is SpikeServerException:
|
|
27
21
|
return "SpikeServerException"
|
|
28
|
-
case is SpikeUnpackException:
|
|
29
|
-
return "SpikeUnpackException"
|
|
30
|
-
case is SpikeCallbackURLNotProvidedException:
|
|
31
|
-
return "SpikeCallbackURLNotProvidedException"
|
|
32
22
|
case is SpikeHealthDataNotAvailableException:
|
|
33
23
|
return "SpikeHealthDataNotAvailableException"
|
|
24
|
+
case is SpikeIntegrationDeletedException:
|
|
25
|
+
return "SpikeIntegrationDeletedException"
|
|
34
26
|
case is SpikeConnectionNotFoundException:
|
|
35
27
|
return "SpikeConnectionNotFoundException"
|
|
36
28
|
case is SpikeDataExtractionException:
|