react-native-spike-sdk 2.2.4 → 2.2.5
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
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:3.0.
|
|
79
|
+
implementation 'com.spikeapi.sdk:spike-sdk:3.0.8'
|
|
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,19 +1,11 @@
|
|
|
1
1
|
package com.spikesdk
|
|
2
2
|
|
|
3
3
|
import android.os.Build
|
|
4
|
-
import android.os.Environment
|
|
5
|
-
import android.os.Environment.DIRECTORY_DOWNLOADS
|
|
6
4
|
import androidx.activity.ComponentActivity
|
|
7
5
|
import androidx.activity.result.ActivityResultCallback
|
|
8
6
|
import androidx.activity.result.ActivityResultLauncher
|
|
9
7
|
import androidx.activity.result.contract.ActivityResultContract
|
|
10
|
-
import com.facebook.react.bridge
|
|
11
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
12
|
-
import com.facebook.react.bridge.ReactContext
|
|
13
|
-
import com.facebook.react.bridge.ReactContextBaseJavaModule
|
|
14
|
-
import com.facebook.react.bridge.ReactMethod
|
|
15
|
-
import com.facebook.react.bridge.WritableMap
|
|
16
|
-
import com.facebook.react.bridge.WritableNativeMap
|
|
8
|
+
import com.facebook.react.bridge.*
|
|
17
9
|
import com.facebook.react.modules.core.DeviceEventManagerModule
|
|
18
10
|
import com.google.gson.GsonBuilder
|
|
19
11
|
import com.spikeapi.SpikeConnection
|
|
@@ -24,8 +16,6 @@ import kotlinx.coroutines.CoroutineScope
|
|
|
24
16
|
import kotlinx.coroutines.Dispatchers
|
|
25
17
|
import kotlinx.coroutines.SupervisorJob
|
|
26
18
|
import kotlinx.coroutines.launch
|
|
27
|
-
import java.io.File
|
|
28
|
-
import java.io.IOException
|
|
29
19
|
import java.time.OffsetDateTime
|
|
30
20
|
import java.util.UUID
|
|
31
21
|
|
|
@@ -38,7 +28,7 @@ fun <I, O> ComponentActivity.registerActivityResultLauncher(
|
|
|
38
28
|
}
|
|
39
29
|
|
|
40
30
|
class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
41
|
-
ReactContextBaseJavaModule(reactContext) {
|
|
31
|
+
ReactContextBaseJavaModule(reactContext), LifecycleEventListener {
|
|
42
32
|
|
|
43
33
|
private val connections = mutableMapOf<String, SpikeConnection>()
|
|
44
34
|
|
|
@@ -50,11 +40,16 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
50
40
|
OffsetDateTime::class.java,
|
|
51
41
|
OffsetDateTimeSerializer()
|
|
52
42
|
).create()
|
|
43
|
+
private var checkPermissionsFor: Triple<String, String, Promise>? = null
|
|
53
44
|
|
|
54
45
|
override fun getName(): String {
|
|
55
46
|
return NAME
|
|
56
47
|
}
|
|
57
48
|
|
|
49
|
+
init {
|
|
50
|
+
reactContext.addLifecycleEventListener(this)
|
|
51
|
+
}
|
|
52
|
+
|
|
58
53
|
@ReactMethod
|
|
59
54
|
fun isPackageInstalled(
|
|
60
55
|
promise: Promise
|
|
@@ -199,7 +194,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
199
194
|
"Connection not found"
|
|
200
195
|
).mapException(), "Connection not found"
|
|
201
196
|
)
|
|
202
|
-
connection.readGrantedPermissions()
|
|
203
197
|
val result = connection.extractData(
|
|
204
198
|
dataType = dataType.toSpikeDataType(),
|
|
205
199
|
from = fromDateMillis.toLong().millisToOffsetDataTime(),
|
|
@@ -227,7 +221,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
227
221
|
"Connection not found"
|
|
228
222
|
).mapException(), "Connection not found"
|
|
229
223
|
)
|
|
230
|
-
connection.readGrantedPermissions()
|
|
231
224
|
val result = connection.extractAndPostData(
|
|
232
225
|
dataType = dataType.toSpikeDataType(),
|
|
233
226
|
from = fromDateMillis.toLong().millisToOffsetDataTime(),
|
|
@@ -253,7 +246,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
253
246
|
"Connection not found"
|
|
254
247
|
).mapException(), "Connection not found"
|
|
255
248
|
)
|
|
256
|
-
connection.readGrantedPermissions()
|
|
257
249
|
val result = connection.extractData(
|
|
258
250
|
dataType = dataType.toSpikeDataType()
|
|
259
251
|
)
|
|
@@ -277,7 +269,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
277
269
|
"Connection not found"
|
|
278
270
|
).mapException(), "Connection not found"
|
|
279
271
|
)
|
|
280
|
-
connection.readGrantedPermissions()
|
|
281
272
|
val result = connection.extractAndPostData(
|
|
282
273
|
dataType = dataType.toSpikeDataType()
|
|
283
274
|
)
|
|
@@ -317,7 +308,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
317
308
|
)
|
|
318
309
|
val permissionsGranted: Boolean =
|
|
319
310
|
connection.hasHealthPermissionsGranted(requiredPermissions)
|
|
320
|
-
connection.readGrantedPermissions()
|
|
321
311
|
promise.resolve(permissionsGranted)
|
|
322
312
|
} catch (e: SpikeExceptions) {
|
|
323
313
|
promise.reject(e.mapException(), e.message)
|
|
@@ -358,7 +348,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
358
348
|
}
|
|
359
349
|
}
|
|
360
350
|
}
|
|
361
|
-
|
|
362
351
|
@ReactMethod
|
|
363
352
|
fun requestHealthPermissions(connectionUUID: String, dataType: String, promise: Promise) {
|
|
364
353
|
val connection = connections[connectionUUID] ?: return promise.reject(
|
|
@@ -371,7 +360,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
371
360
|
connection.getRequiredHealthPermissionsMetadata(dataType.toSpikeDataType())
|
|
372
361
|
|
|
373
362
|
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.TIRAMISU) {
|
|
374
|
-
val intent =
|
|
363
|
+
val intent = SpikeConnection.requestReadAuthorization().createIntent(
|
|
375
364
|
reactApplicationContext, permissions
|
|
376
365
|
)
|
|
377
366
|
|
|
@@ -383,15 +372,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
383
372
|
} else {
|
|
384
373
|
val activity = reactApplicationContext.currentActivity
|
|
385
374
|
if (activity is ComponentActivity) {
|
|
375
|
+
checkPermissionsFor = Triple(connectionUUID, dataType, promise)
|
|
386
376
|
val launcher =
|
|
387
377
|
activity.registerActivityResultLauncher(
|
|
388
|
-
|
|
378
|
+
SpikeConnection.requestReadAuthorization()
|
|
389
379
|
) {
|
|
390
|
-
|
|
380
|
+
|
|
391
381
|
}
|
|
392
382
|
|
|
393
383
|
launcher.launch(permissions)
|
|
394
|
-
promise.resolve(true)
|
|
395
384
|
} else {
|
|
396
385
|
promise.resolve(false)
|
|
397
386
|
}
|
|
@@ -432,10 +421,24 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
|
|
|
432
421
|
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
433
422
|
.emit(eventName, params)
|
|
434
423
|
}
|
|
424
|
+
override fun onHostResume() {
|
|
425
|
+
checkPermissionsFor?.let {
|
|
426
|
+
checkPermissionsGranted(
|
|
427
|
+
it.first,
|
|
428
|
+
it.second,
|
|
429
|
+
it.third
|
|
430
|
+
)
|
|
431
|
+
}
|
|
432
|
+
checkPermissionsFor = null
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
override fun onHostPause() {
|
|
436
|
+
}
|
|
435
437
|
|
|
438
|
+
override fun onHostDestroy() {
|
|
439
|
+
}
|
|
436
440
|
companion object {
|
|
437
441
|
const val NAME = "SpikeSdk"
|
|
438
442
|
const val REQUEST_CODE = 4200
|
|
439
443
|
}
|
|
440
|
-
|
|
441
444
|
}
|
package/package.json
CHANGED
|
@@ -5,7 +5,7 @@ folly_compiler_flags = '-DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1
|
|
|
5
5
|
|
|
6
6
|
Pod::Spec.new do |s|
|
|
7
7
|
s.name = "react-native-spike-sdk"
|
|
8
|
-
s.version = "2.2.
|
|
8
|
+
s.version = "2.2.5"
|
|
9
9
|
s.summary = "Spike API for health and productivity data from wearables and IoT devices"
|
|
10
10
|
|
|
11
11
|
s.description = <<-DESC
|