react-native-spike-sdk 1.0.22 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (91) hide show
  1. package/README.md +243 -185
  2. package/android/build.gradle +1 -1
  3. package/android/src/main/java/com/spikesdk/SpikeMappers.kt +9 -3
  4. package/android/src/main/java/com/spikesdk/SpikeSdkModule.kt +54 -98
  5. package/ios/SpikeConnectionListener.swift +1 -1
  6. package/ios/SpikeDataTypeMapper.swift +2 -2
  7. package/ios/SpikeExceptionMapper.swift +2 -0
  8. package/ios/SpikeSdk.m +1 -24
  9. package/ios/SpikeSdk.swift +15 -110
  10. package/lib/commonjs/Spike.js +4 -39
  11. package/lib/commonjs/Spike.js.map +1 -1
  12. package/lib/commonjs/SpikeBackgroundDeliveriesLogger.js +2 -0
  13. package/lib/{module/SpikeWebhookConnectionListener.js.map → commonjs/SpikeBackgroundDeliveriesLogger.js.map} +1 -1
  14. package/lib/commonjs/SpikeConnection.js +82 -8
  15. package/lib/commonjs/SpikeConnection.js.map +1 -1
  16. package/lib/commonjs/SpikeException.js +3 -1
  17. package/lib/commonjs/SpikeException.js.map +1 -1
  18. package/lib/commonjs/index.js +9 -8
  19. package/lib/commonjs/index.js.map +1 -1
  20. package/lib/module/Spike.js +4 -35
  21. package/lib/module/Spike.js.map +1 -1
  22. package/lib/module/SpikeBackgroundDeliveriesLogger.js +2 -0
  23. package/lib/{commonjs/SpikeWebhookConnectionListener.js.map → module/SpikeBackgroundDeliveriesLogger.js.map} +1 -1
  24. package/lib/module/SpikeConnection.js +82 -8
  25. package/lib/module/SpikeConnection.js.map +1 -1
  26. package/lib/module/SpikeException.js +1 -0
  27. package/lib/module/SpikeException.js.map +1 -1
  28. package/lib/module/index.js +4 -9
  29. package/lib/module/index.js.map +1 -1
  30. package/lib/typescript/DataModels/SpikeActivitiesStreamDataEntry.d.ts +40 -40
  31. package/lib/typescript/DataModels/SpikeActivitiesStreamDataEntry.d.ts.map +1 -1
  32. package/lib/typescript/DataModels/SpikeActivitiesSummaryDataEntry.d.ts +16 -16
  33. package/lib/typescript/DataModels/SpikeActivitiesSummaryDataEntry.d.ts.map +1 -1
  34. package/lib/typescript/DataModels/SpikeBodyDataEntry.d.ts +21 -22
  35. package/lib/typescript/DataModels/SpikeBodyDataEntry.d.ts.map +1 -1
  36. package/lib/typescript/DataModels/SpikeBreathingDataEntry.d.ts +3 -3
  37. package/lib/typescript/DataModels/SpikeBreathingDataEntry.d.ts.map +1 -1
  38. package/lib/typescript/DataModels/SpikeCaloriesDataEntry.d.ts +2 -2
  39. package/lib/typescript/DataModels/SpikeCaloriesDataEntry.d.ts.map +1 -1
  40. package/lib/typescript/DataModels/SpikeDistanceDataEntry.d.ts +2 -2
  41. package/lib/typescript/DataModels/SpikeDistanceDataEntry.d.ts.map +1 -1
  42. package/lib/typescript/DataModels/SpikeGlucoseDataEntry.d.ts +8 -8
  43. package/lib/typescript/DataModels/SpikeGlucoseDataEntry.d.ts.map +1 -1
  44. package/lib/typescript/DataModels/SpikeHeartDataEntry.d.ts +10 -10
  45. package/lib/typescript/DataModels/SpikeHeartDataEntry.d.ts.map +1 -1
  46. package/lib/typescript/DataModels/SpikeOxygenSaturationDataEntry.d.ts +2 -2
  47. package/lib/typescript/DataModels/SpikeOxygenSaturationDataEntry.d.ts.map +1 -1
  48. package/lib/typescript/DataModels/SpikeSleepDataEntry.d.ts +13 -13
  49. package/lib/typescript/DataModels/SpikeSleepDataEntry.d.ts.map +1 -1
  50. package/lib/typescript/DataModels/SpikeStepsDataEntry.d.ts +2 -2
  51. package/lib/typescript/DataModels/SpikeStepsDataEntry.d.ts.map +1 -1
  52. package/lib/typescript/Spike.d.ts +10 -8
  53. package/lib/typescript/Spike.d.ts.map +1 -1
  54. package/lib/typescript/SpikeBackgroundDeliveriesLogger.d.ts +4 -0
  55. package/lib/typescript/SpikeBackgroundDeliveriesLogger.d.ts.map +1 -0
  56. package/lib/typescript/SpikeConnection.d.ts +21 -4
  57. package/lib/typescript/SpikeConnection.d.ts.map +1 -1
  58. package/lib/typescript/SpikeException.d.ts +2 -0
  59. package/lib/typescript/SpikeException.d.ts.map +1 -1
  60. package/lib/typescript/index.d.ts +6 -10
  61. package/lib/typescript/index.d.ts.map +1 -1
  62. package/package.json +1 -1
  63. package/react-native-spike-sdk.podspec +2 -2
  64. package/src/DataModels/SpikeActivitiesStreamDataEntry.ts +40 -40
  65. package/src/DataModels/SpikeActivitiesSummaryDataEntry.ts +16 -16
  66. package/src/DataModels/SpikeBodyDataEntry.ts +21 -22
  67. package/src/DataModels/SpikeBreathingDataEntry.ts +3 -3
  68. package/src/DataModels/SpikeCaloriesDataEntry.ts +2 -2
  69. package/src/DataModels/SpikeDistanceDataEntry.ts +2 -2
  70. package/src/DataModels/SpikeGlucoseDataEntry.ts +8 -8
  71. package/src/DataModels/SpikeHeartDataEntry.ts +10 -10
  72. package/src/DataModels/SpikeOxygenSaturationDataEntry.ts +2 -2
  73. package/src/DataModels/SpikeSleepDataEntry.ts +13 -13
  74. package/src/DataModels/SpikeStepsDataEntry.ts +2 -2
  75. package/src/Spike.ts +16 -71
  76. package/src/SpikeBackgroundDeliveriesLogger.ts +3 -0
  77. package/src/SpikeConnection.ts +157 -21
  78. package/src/SpikeException.ts +1 -0
  79. package/src/index.ts +6 -13
  80. package/lib/commonjs/SpikeWebhookConnection.js +0 -111
  81. package/lib/commonjs/SpikeWebhookConnection.js.map +0 -1
  82. package/lib/commonjs/SpikeWebhookConnectionListener.js +0 -2
  83. package/lib/module/SpikeWebhookConnection.js +0 -104
  84. package/lib/module/SpikeWebhookConnection.js.map +0 -1
  85. package/lib/module/SpikeWebhookConnectionListener.js +0 -2
  86. package/lib/typescript/SpikeWebhookConnection.d.ts +0 -22
  87. package/lib/typescript/SpikeWebhookConnection.d.ts.map +0 -1
  88. package/lib/typescript/SpikeWebhookConnectionListener.d.ts +0 -4
  89. package/lib/typescript/SpikeWebhookConnectionListener.d.ts.map +0 -1
  90. package/src/SpikeWebhookConnection.ts +0 -173
  91. package/src/SpikeWebhookConnectionListener.ts +0 -3
@@ -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:1.1.8'
79
+ implementation 'com.spikeapi.sdk:spike-sdk:2.1.0'
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,6 +1,7 @@
1
1
  package com.spikesdk
2
2
 
3
3
  import com.spikeapi.SpikeDataTypes
4
+ import com.spikeapi.SpikeEnvironment
4
5
  import com.spikeapi.SpikeExceptions
5
6
  import com.spikeapi.healthconnect.HealthConnectAvailability
6
7
  import com.spikeapi.model.SpikeData
@@ -14,11 +15,10 @@ fun SpikeExceptions.mapException(): String {
14
15
  SpikeExceptions.SpikeConnectionIsClosedException -> "SpikeConnectionIsClosedException"
15
16
  SpikeExceptions.SpikeInvalidCredentialsException -> "SpikeInvalidCredentialsException"
16
17
  SpikeExceptions.SpikeInvalidDateRangeException -> "SpikeInvalidDateRangeException"
17
- SpikeExceptions.SpikeInvalidPostbackUrlException -> "SpikeInvalidPostbackUrlException"
18
- SpikeExceptions.SpikePackException -> "SpikePackException"
18
+ SpikeExceptions.SpikeInvalidCallbackUrlException -> "SpikeInvalidCallbackUrlException"
19
19
  SpikeExceptions.SpikePermissionsNotGrantedException -> "SpikePermissionsNotGrantedException"
20
20
  is SpikeExceptions.SpikeServerException -> "SpikeServerException"
21
- SpikeExceptions.SpikeUnpackException -> "SpikeUnpackException"
21
+ else -> "SpikeException"
22
22
  }
23
23
  }
24
24
 
@@ -59,3 +59,9 @@ fun HealthConnectAvailability.toStringType(): String = when (this) {
59
59
  HealthConnectAvailability.INSTALLED -> "installed"
60
60
  HealthConnectAvailability.NOT_INSTALLED -> "notInstalled"
61
61
  }
62
+
63
+ fun String.toSpikeEnvironment(): SpikeEnvironment = when (this) {
64
+ "PROD" -> SpikeEnvironment.PROD
65
+ "DEV" -> SpikeEnvironment.DEV
66
+ else -> SpikeEnvironment.PROD
67
+ }
@@ -8,13 +8,10 @@ import com.facebook.react.bridge.ReactMethod
8
8
  import com.facebook.react.bridge.WritableMap
9
9
  import com.facebook.react.bridge.WritableNativeMap
10
10
  import com.facebook.react.modules.core.DeviceEventManagerModule
11
- import com.google.gson.FieldNamingPolicy
12
11
  import com.google.gson.GsonBuilder
13
- import com.google.gson.JsonDeserializer
14
12
  import com.spikeapi.SpikeConnection
15
13
  import com.spikeapi.SpikeExceptions
16
14
  import com.spikeapi.SpikeLogger
17
- import com.spikeapi.SpikeWebhookConnection
18
15
  import kotlinx.coroutines.CoroutineScope
19
16
  import kotlinx.coroutines.Dispatchers
20
17
  import kotlinx.coroutines.SupervisorJob
@@ -45,6 +42,8 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
45
42
  appId: String,
46
43
  authToken: String,
47
44
  customerEndUserId: String,
45
+ callbackUrl: String,
46
+ env: String,
48
47
  useLogger: Boolean,
49
48
  promise: Promise
50
49
  ) {
@@ -60,6 +59,8 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
60
59
  authToken = authToken,
61
60
  customerEndUserId = customerEndUserId,
62
61
  appId = appId,
62
+ callbackUrl = callbackUrl,
63
+ env = env.toSpikeEnvironment(),
63
64
  logger = logger,
64
65
  )
65
66
  promise.resolve(uuid)
@@ -118,7 +119,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
118
119
  fun getCallbackUrl(uuid: String, promise: Promise) {
119
120
  try {
120
121
  val connection =
121
- (connections[uuid] as? SpikeWebhookConnection) ?: return promise.reject(
122
+ connections[uuid] ?: return promise.reject(
122
123
  SpikeExceptions.SpikeException(
123
124
  "Connection not found"
124
125
  ).mapException(), "Connection not found"
@@ -148,50 +149,6 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
148
149
  }
149
150
  }
150
151
 
151
- @ReactMethod
152
- fun pack(uuid: String, promise: Promise) {
153
- scope.launch {
154
- try {
155
- val connection = connections[uuid] ?: return@launch promise.reject(
156
- SpikeExceptions.SpikeException(
157
- "Connection not found"
158
- ).mapException(), "Connection not found"
159
- )
160
- val serializedConnection = connection.pack()
161
- promise.resolve(serializedConnection)
162
- } catch (e: SpikeExceptions) {
163
- promise.reject(e.mapException(), e.message)
164
- }
165
- }
166
- }
167
-
168
- @ReactMethod
169
- fun unpackConnection(
170
- uuid: String,
171
- connection: String,
172
- useLogger: Boolean,
173
- promise: Promise
174
- ) {
175
- scope.launch {
176
- try {
177
- val logger = if (useLogger) {
178
- createLogger(uuid)
179
- } else {
180
- null
181
- }
182
- connections[uuid] =
183
- SpikeConnection.unpackConnection(
184
- context = reactApplicationContext,
185
- connection = connection,
186
- logger = logger
187
- )
188
- promise.resolve(uuid)
189
- } catch (e: SpikeExceptions) {
190
- promise.reject(e.mapException(), e.message)
191
- }
192
- }
193
- }
194
-
195
152
  @ReactMethod
196
153
  fun extractDataInRange(
197
154
  connectionUUID: String,
@@ -202,7 +159,12 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
202
159
  ) {
203
160
  scope.launch {
204
161
  try {
205
- val result = connections[connectionUUID]?.extractData(
162
+ val connection = connections[connectionUUID] ?: return@launch promise.reject(
163
+ SpikeExceptions.SpikeException(
164
+ "Connection not found"
165
+ ).mapException(), "Connection not found"
166
+ )
167
+ val result = connection.extractData(
206
168
  dataType = dataType.toSpikeDataType(),
207
169
  from = fromDateMillis.toLong().millisToOffsetDataTime(),
208
170
  to = toDateMillis.toLong().millisToOffsetDataTime()
@@ -224,12 +186,16 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
224
186
  ) {
225
187
  scope.launch {
226
188
  try {
227
- val result =
228
- (connections[connectionUUID] as? SpikeWebhookConnection)?.extractAndPostData(
229
- dataType = dataType.toSpikeDataType(),
230
- from = fromDateMillis.toLong().millisToOffsetDataTime(),
231
- to = toDateMillis.toLong().millisToOffsetDataTime()
232
- )
189
+ val connection = connections[connectionUUID] ?: return@launch promise.reject(
190
+ SpikeExceptions.SpikeException(
191
+ "Connection not found"
192
+ ).mapException(), "Connection not found"
193
+ )
194
+ val result = connection.extractAndPostData(
195
+ dataType = dataType.toSpikeDataType(),
196
+ from = fromDateMillis.toLong().millisToOffsetDataTime(),
197
+ to = toDateMillis.toLong().millisToOffsetDataTime()
198
+ )
233
199
  promise.resolve(gson.toJson(result))
234
200
  } catch (e: SpikeExceptions) {
235
201
  promise.reject(e.mapException(), e.message)
@@ -245,7 +211,12 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
245
211
  ) {
246
212
  scope.launch {
247
213
  try {
248
- val result = connections[connectionUUID]?.extractData(
214
+ val connection = connections[connectionUUID] ?: return@launch promise.reject(
215
+ SpikeExceptions.SpikeException(
216
+ "Connection not found"
217
+ ).mapException(), "Connection not found"
218
+ )
219
+ val result = connection.extractData(
249
220
  dataType = dataType.toSpikeDataType()
250
221
  )
251
222
  promise.resolve(gson.toJson(result))
@@ -263,43 +234,15 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
263
234
  ) {
264
235
  scope.launch {
265
236
  try {
266
- val result =
267
- (connections[connectionUUID] as? SpikeWebhookConnection)?.extractAndPostData(
268
- dataType = dataType.toSpikeDataType()
269
- )
270
- promise.resolve(gson.toJson(result))
271
- } catch (e: SpikeExceptions) {
272
- promise.reject(e.mapException(), e.message)
273
- }
274
- }
275
- }
276
-
277
- @ReactMethod
278
- fun createWebhookConnection(
279
- uuid: String,
280
- appId: String,
281
- authToken: String,
282
- customerEndUserId: String,
283
- callbackUrl: String,
284
- useLogger: Boolean,
285
- promise: Promise
286
- ) {
287
- scope.launch {
288
- try {
289
- val logger = if (useLogger) {
290
- createLogger(uuid)
291
- } else {
292
- null
293
- }
294
- connections[uuid] = SpikeWebhookConnection.createConnection(
295
- context = reactApplicationContext,
296
- authToken = authToken,
297
- customerEndUserId = customerEndUserId,
298
- appId = appId,
299
- logger = logger,
300
- callbackUrl = callbackUrl
237
+ val connection = connections[connectionUUID] ?: return@launch promise.reject(
238
+ SpikeExceptions.SpikeException(
239
+ "Connection not found"
240
+ ).mapException(), "Connection not found"
301
241
  )
302
- promise.resolve(uuid)
242
+ val result = connection.extractAndPostData(
243
+ dataType = dataType.toSpikeDataType()
244
+ )
245
+ promise.resolve(gson.toJson(result))
303
246
  } catch (e: SpikeExceptions) {
304
247
  promise.reject(e.mapException(), e.message)
305
248
  }
@@ -325,9 +268,13 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
325
268
  fun checkPermissionsGranted(connectionUUID: String, promise: Promise) {
326
269
  scope.launch {
327
270
  try {
271
+ val connection = connections[connectionUUID] ?: return@launch promise.reject(
272
+ SpikeExceptions.SpikeException(
273
+ "Connection not found"
274
+ ).mapException(), "Connection not found"
275
+ )
328
276
  val permissionsGranted: Boolean =
329
- connections[connectionUUID]?.hasHealthPermissionsGranted()
330
- ?: return@launch promise.resolve(true)
277
+ connection.hasHealthPermissionsGranted()
331
278
  promise.resolve(permissionsGranted)
332
279
  } catch (e: SpikeExceptions) {
333
280
  promise.reject(e.mapException(), e.message)
@@ -339,8 +286,12 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
339
286
  fun getHealthConnectAvailability(connectionUUID: String, promise: Promise) {
340
287
  scope.launch {
341
288
  try {
342
- val availability = connections[connectionUUID]?.getHealthConnectAvailability()
343
- ?: return@launch promise.resolve(true)
289
+ val connection = connections[connectionUUID] ?: return@launch promise.reject(
290
+ SpikeExceptions.SpikeException(
291
+ "Connection not found"
292
+ ).mapException(), "Connection not found"
293
+ )
294
+ val availability = connection.getHealthConnectAvailability()
344
295
  promise.resolve(availability.toStringType())
345
296
  } catch (e: SpikeExceptions) {
346
297
  promise.reject(e.mapException(), e.message)
@@ -352,7 +303,12 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
352
303
  fun revokeAllPermissions(connectionUUID: String, promise: Promise) {
353
304
  scope.launch {
354
305
  try {
355
- connections[connectionUUID]?.revokeAllPermissions()
306
+ val connection = connections[connectionUUID] ?: return@launch promise.reject(
307
+ SpikeExceptions.SpikeException(
308
+ "Connection not found"
309
+ ).mapException(), "Connection not found"
310
+ )
311
+ connection.revokeAllPermissions()
356
312
  promise.resolve(true)
357
313
  } catch (e: SpikeExceptions) {
358
314
  promise.reject(e.mapException(), e.message)
@@ -371,7 +327,7 @@ class SpikeSdkModule(reactContext: ReactApplicationContext) :
371
327
  val permissions = connection.getRequiredHealthPermissionsMetadata()
372
328
 
373
329
  val intent = connection.requestReadAuthorization().createIntent(
374
- context = reactApplicationContext, permissions
330
+ reactApplicationContext, permissions
375
331
  )
376
332
 
377
333
  reactApplicationContext.currentActivity?.startActivityForResult(
@@ -1,7 +1,7 @@
1
1
  import Foundation
2
2
  import SpikeSDK
3
3
 
4
- class SpikeConnectionListener: SpikeWebhookConnectionListener {
4
+ class SpikeConnectionListener: SpikeBackgroundDeliveriesLogger {
5
5
 
6
6
  private let connectionUUID: String
7
7
  private var onLog: (String, String) -> Void
@@ -141,7 +141,7 @@ class SpikeDataTypeMapper {
141
141
  }
142
142
  }
143
143
 
144
- static func extractAndPostData(_ dataType: String, connection: SpikeWebhookConnection) async throws -> String? {
144
+ static func extractAndPostData(_ dataType: String, connection: SpikeConnection) async throws -> String? {
145
145
  switch dataType {
146
146
  case "activities_summary":
147
147
  let value = try await connection.extractAndPostData(SpikeDataTypes.activitiesSummary)
@@ -181,7 +181,7 @@ class SpikeDataTypeMapper {
181
181
  }
182
182
  }
183
183
 
184
- static func extractAndPostDataInRange(_ dataType: String, connection: SpikeWebhookConnection, from: Date, to: Date) async throws -> String? {
184
+ static func extractAndPostDataInRange(_ dataType: String, connection: SpikeConnection, from: Date, to: Date) async throws -> String? {
185
185
  switch dataType {
186
186
  case "activities_summary":
187
187
  let value = try await connection.extractAndPostData(SpikeDataTypes.activitiesSummary, from: from, to: to)
@@ -23,6 +23,8 @@ class SpikeExceptionMapper {
23
23
  return "SpikeServerException"
24
24
  case is SpikeUnpackException:
25
25
  return "SpikeUnpackException"
26
+ case is SpikeCallbackURLNotProvidedException:
27
+ return "SpikeCallbackURLNotProvidedException"
26
28
  case is SpikeWrapperException:
27
29
  return "SpikeException"
28
30
  default:
package/ios/SpikeSdk.m CHANGED
@@ -5,29 +5,12 @@
5
5
 
6
6
  // MARK: Spike SDK level
7
7
 
8
- RCT_EXTERN_METHOD(setEnvironment: (NSString)env
9
- withResolver: (RCTPromiseResolveBlock)resolve
10
- withRejecter: (RCTPromiseRejectBlock)reject)
11
-
12
8
  RCT_EXTERN_METHOD(createConnection: (NSString)uuid
13
- withAppId: (NSString)appId
14
- withAuthToken: (NSString)authToken
15
- withCustomerEndUserId: (NSString)customerEndUserId
16
- withUseLogger: (BOOL)useLogger
17
- withResolver: (RCTPromiseResolveBlock)resolve
18
- withRejecter: (RCTPromiseRejectBlock)reject)
19
-
20
- RCT_EXTERN_METHOD(createWebhookConnection: (NSString)uuid
21
9
  withAppId: (NSString)appId
22
10
  withAuthToken: (NSString)authToken
23
11
  withCustomerEndUserId: (NSString)customerEndUserId
24
12
  withCallbackUrl: (NSString)callbackUrl
25
- withUseLogger: (BOOL)useLogger
26
- withResolver: (RCTPromiseResolveBlock)resolve
27
- withRejecter: (RCTPromiseRejectBlock)reject)
28
-
29
- RCT_EXTERN_METHOD(unpackConnection: (NSString)uuid
30
- withConnection: (NSString)connection
13
+ withEnv: (NSString)env
31
14
  withUseLogger: (BOOL)useLogger
32
15
  withResolver: (RCTPromiseResolveBlock)resolve
33
16
  withRejecter: (RCTPromiseRejectBlock)reject)
@@ -39,8 +22,6 @@ RCT_EXTERN_METHOD(ensurePermissionsAreGranted: (NSArray<NSString>)permissions
39
22
  withResolver: (RCTPromiseResolveBlock)resolve
40
23
  withRejecter: (RCTPromiseRejectBlock)reject)
41
24
 
42
- RCT_EXTERN_METHOD(initialize)
43
-
44
25
  // MARK: SpikeConnection level
45
26
 
46
27
  RCT_EXTERN_METHOD(getAppId: (NSString)connectionUUID
@@ -59,10 +40,6 @@ RCT_EXTERN_METHOD(close: (NSString)connectionUUID
59
40
  withResolver: (RCTPromiseResolveBlock)resolve
60
41
  withRejecter: (RCTPromiseRejectBlock)reject)
61
42
 
62
- RCT_EXTERN_METHOD(pack: (NSString)connectionUUID
63
- withResolver: (RCTPromiseResolveBlock)resolve
64
- withRejecter: (RCTPromiseRejectBlock)reject)
65
-
66
43
  RCT_EXTERN_METHOD(extractData: (NSString)connectionUUID
67
44
  withDataType: (NSString)dataType
68
45
  withResolver: (RCTPromiseResolveBlock)resolve
@@ -16,44 +16,33 @@ class SpikeSdk: RCTEventEmitter {
16
16
  }
17
17
 
18
18
  // MARK: Spike SDK level
19
-
20
- @objc(setEnvironment:
21
- withResolver:
22
- withRejecter:)
23
- func setEnvironment(env: String,
24
- resolve: @escaping RCTPromiseResolveBlock,
25
- reject: @escaping RCTPromiseRejectBlock) {
26
- switch (env) {
27
- case "DEV":
28
- Spike.setEnvironment(env: .DEV)
29
- case "PROD":
30
- Spike.setEnvironment(env: .PROD)
31
- default:
32
- break
33
- }
34
- resolve(Void())
35
- }
36
-
19
+
37
20
  @objc(createConnection:
38
21
  withAppId:
39
22
  withAuthToken:
40
23
  withCustomerEndUserId:
24
+ withCallbackUrl:
25
+ withEnv:
41
26
  withUseLogger:
42
27
  withResolver:withRejecter:)
43
28
  func createConnection(uuid: String,
44
29
  appId: String,
45
30
  authToken: String,
46
31
  customerEndUserId: String,
32
+ callbackUrl: String?,
33
+ env: String?,
47
34
  useLogger: Bool,
48
35
  resolve: @escaping RCTPromiseResolveBlock,
49
36
  reject: @escaping RCTPromiseRejectBlock) {
50
37
  Task {
51
38
  do {
52
- let logger = useLogger ? createLogger(connectionUUID: uuid) : nil
39
+ let logger = useLogger ? self.createLogger(connectionUUID: uuid) : nil
53
40
  let spikeConnection = try await Spike.createConnection(
54
41
  appId: appId,
55
42
  authToken: authToken,
56
43
  customerEndUserId: customerEndUserId,
44
+ callbackUrl: callbackUrl != nil ? URL(string: callbackUrl!) : nil,
45
+ env: env == "DEV" ? .DEV : .PROD,
57
46
  logger: logger)
58
47
  connections[uuid] = spikeConnection
59
48
  resolve(Void())
@@ -63,66 +52,6 @@ class SpikeSdk: RCTEventEmitter {
63
52
  }
64
53
  }
65
54
 
66
- @objc(createWebhookConnection:
67
- withAppId:
68
- withAuthToken:
69
- withCustomerEndUserId:
70
- withCallbackUrl:
71
- withUseLogger:
72
- withResolver:
73
- withRejecter:)
74
- func createWebhookConnection(uuid: String,
75
- appId: String,
76
- authToken: String,
77
- customerEndUserId: String,
78
- callbackUrl: String,
79
- useLogger: Bool,
80
- resolve: @escaping RCTPromiseResolveBlock,
81
- reject: @escaping RCTPromiseRejectBlock) {
82
- guard let url = URL(string: callbackUrl) else {
83
- spikeReject(with: SpikeWrapperException(), reject: reject)
84
- return
85
- }
86
- Task {
87
- do {
88
- let logger = useLogger ? createLogger(connectionUUID: uuid) : nil
89
- let spikeConnection = try await Spike.createConnection(
90
- appId: appId,
91
- authToken: authToken,
92
- customerEndUserId: customerEndUserId,
93
- callbackUrl: url,
94
- logger: logger)
95
- connections[uuid] = spikeConnection
96
- resolve(uuid)
97
- } catch let error {
98
- spikeReject(with: error, reject: reject)
99
- }
100
- }
101
- }
102
-
103
- @objc(unpackConnection:
104
- withConnection:
105
- withUseLogger:
106
- withResolver:
107
- withRejecter:)
108
- func unpackConnection(uuid: String,
109
- connection: String,
110
- useLogger: Bool,
111
- resolve: @escaping RCTPromiseResolveBlock,
112
- reject: @escaping RCTPromiseRejectBlock) {
113
- Task {
114
- do {
115
- let logger = useLogger ? createLogger(connectionUUID: uuid) : nil
116
- let spikeConnection = try await Spike.unpackConnection(connection: connection,
117
- logger: logger)
118
- connections[uuid] = spikeConnection
119
- resolve(uuid)
120
- } catch let error {
121
- spikeReject(with: error, reject: reject)
122
- }
123
- }
124
- }
125
-
126
55
  @objc(getBackgroundConnections:
127
56
  withRejecter:)
128
57
  func getBackgroundConnections(resolve: @escaping RCTPromiseResolveBlock,
@@ -160,11 +89,6 @@ class SpikeSdk: RCTEventEmitter {
160
89
  }
161
90
  }
162
91
 
163
- @objc(initialize)
164
- func initialize() {
165
- // Spike.configure()
166
- }
167
-
168
92
  // MARK: SpikeConnection level
169
93
 
170
94
  @objc(getAppId:
@@ -243,25 +167,6 @@ class SpikeSdk: RCTEventEmitter {
243
167
  }
244
168
  }
245
169
 
246
- @objc(pack:
247
- withResolver:
248
- withRejecter:)
249
- func pack(connectionUUID: String,
250
- resolve: @escaping RCTPromiseResolveBlock,
251
- reject: @escaping RCTPromiseRejectBlock) {
252
- guard let connection = connections[connectionUUID] else {
253
- spikeReject(with: SpikeWrapperException(), reject: reject)
254
- return
255
- }
256
-
257
- do {
258
- let value = try connection.pack()
259
- resolve(value)
260
- } catch let error {
261
- spikeReject(with: error, reject: reject)
262
- }
263
- }
264
-
265
170
  @objc(extractData:
266
171
  withDataType:
267
172
  withResolver:
@@ -334,7 +239,7 @@ class SpikeSdk: RCTEventEmitter {
334
239
  func getCallbackUrl(connectionUUID: String,
335
240
  resolve: @escaping RCTPromiseResolveBlock,
336
241
  reject: @escaping RCTPromiseRejectBlock) {
337
- guard let connection = connections[connectionUUID] as? SpikeWebhookConnection else {
242
+ guard let connection = connections[connectionUUID] else {
338
243
  spikeReject(with: SpikeWrapperException(), reject: reject)
339
244
  return
340
245
  }
@@ -355,7 +260,7 @@ class SpikeSdk: RCTEventEmitter {
355
260
  dataType: String,
356
261
  resolve: @escaping RCTPromiseResolveBlock,
357
262
  reject: @escaping RCTPromiseRejectBlock) {
358
- guard let connection = connections[connectionUUID] as? SpikeWebhookConnection else {
263
+ guard let connection = connections[connectionUUID] else {
359
264
  spikeReject(with: SpikeWrapperException(), reject: reject)
360
265
  return
361
266
  }
@@ -387,7 +292,7 @@ class SpikeSdk: RCTEventEmitter {
387
292
  toDateMillis: Double,
388
293
  resolve: @escaping RCTPromiseResolveBlock,
389
294
  reject: @escaping RCTPromiseRejectBlock) {
390
- guard let connection = connections[connectionUUID] as? SpikeWebhookConnection else {
295
+ guard let connection = connections[connectionUUID] else {
391
296
  spikeReject(with: SpikeWrapperException(), reject: reject)
392
297
  return
393
298
  }
@@ -419,7 +324,7 @@ class SpikeSdk: RCTEventEmitter {
419
324
  dataTypes: [String],
420
325
  resolve: @escaping RCTPromiseResolveBlock,
421
326
  reject: @escaping RCTPromiseRejectBlock) {
422
- guard let connection = connections[connectionUUID] as? SpikeWebhookConnection else {
327
+ guard let connection = connections[connectionUUID] else {
423
328
  spikeReject(with: SpikeWrapperException(), reject: reject)
424
329
  return
425
330
  }
@@ -441,7 +346,7 @@ class SpikeSdk: RCTEventEmitter {
441
346
  func getBackgroundDeliveryDataTypes(connectionUUID: String,
442
347
  resolve: @escaping RCTPromiseResolveBlock,
443
348
  reject: @escaping RCTPromiseRejectBlock) {
444
- guard let connection = connections[connectionUUID] as? SpikeWebhookConnection else {
349
+ guard let connection = connections[connectionUUID] else {
445
350
  spikeReject(with: SpikeWrapperException(), reject: reject)
446
351
  return
447
352
  }
@@ -463,7 +368,7 @@ class SpikeSdk: RCTEventEmitter {
463
368
  func setListener(connectionUUID: String,
464
369
  resolve: @escaping RCTPromiseResolveBlock,
465
370
  reject: @escaping RCTPromiseRejectBlock) {
466
- guard let connection = connections[connectionUUID] as? SpikeWebhookConnection else {
371
+ guard let connection = connections[connectionUUID] else {
467
372
  spikeReject(with: SpikeWrapperException(), reject: reject)
468
373
  return
469
374
  }
@@ -507,7 +412,7 @@ class SpikeSdk: RCTEventEmitter {
507
412
  }
508
413
  }
509
414
 
510
- private func createListener(connectionUUID: String) -> SpikeWebhookConnectionListener {
415
+ private func createListener(connectionUUID: String) -> SpikeBackgroundDeliveriesLogger {
511
416
  return SpikeConnectionListener(connectionUUID: connectionUUID) { [weak self] connectionUUID, log in
512
417
  let body = [
513
418
  "connectionUUID": connectionUUID,
@@ -3,53 +3,23 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.unpackConnection = exports.setEnvironment = exports.initialize = exports.getBackgroundConnections = exports.ensurePermissionsAreGranted = exports.createWebhookConnection = exports.createConnection = void 0;
6
+ exports.getBackgroundConnections = exports.ensurePermissionsAreGranted = exports.createConnection = void 0;
7
7
  var _reactNative = require("react-native");
8
8
  var _SpikeConnection = require("./SpikeConnection");
9
9
  var _SpikeException = require("./SpikeException");
10
10
  var _SpikeSdk = require("./SpikeSdk");
11
- var _SpikeWebhookConnection = require("./SpikeWebhookConnection");
12
- const setEnvironment = async env => {
13
- if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
14
- await _SpikeSdk.SpikeSdk.setEnvironment(env);
15
- };
16
- exports.setEnvironment = setEnvironment;
17
- const createConnection = async function (appId, authToken, customerEndUserId) {
18
- let logger = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
11
+ const createConnection = async (config, logger) => {
19
12
  if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
20
13
  const connectionUUID = generateUUID();
21
14
  const spikeConnection = new _SpikeConnection.SpikeConnection(connectionUUID, logger);
22
- await _SpikeSdk.SpikeSdk.createConnection(connectionUUID, appId, authToken, customerEndUserId, !!logger);
15
+ await _SpikeSdk.SpikeSdk.createConnection(connectionUUID, config.appId, config.authToken, config.customerEndUserId, config.callbackUrl ?? null, config.env ?? 'PROD', !!logger);
23
16
  return spikeConnection;
24
17
  };
25
18
  exports.createConnection = createConnection;
26
- const createWebhookConnection = async function (appId, authToken, customerEndUserId, callbackUrl) {
27
- let logger = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : null;
28
- if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
29
- const connectionUUID = generateUUID();
30
- const spikeConnection = new _SpikeWebhookConnection.SpikeWebhookConnection(connectionUUID, logger);
31
- await _SpikeSdk.SpikeSdk.createWebhookConnection(connectionUUID, appId, authToken, customerEndUserId, callbackUrl, !!logger);
32
- return spikeConnection;
33
- };
34
- exports.createWebhookConnection = createWebhookConnection;
35
- const unpackConnection = async function (connection) {
36
- let logger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
37
- if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
38
- const connectionUUID = generateUUID();
39
- const webhookConnection = new _SpikeWebhookConnection.SpikeWebhookConnection(connectionUUID, logger);
40
- await _SpikeSdk.SpikeSdk.unpackConnection(connectionUUID, connection, !!logger);
41
- try {
42
- await webhookConnection.getCallbackUrl();
43
- return webhookConnection;
44
- } catch (error) {
45
- return webhookConnection;
46
- }
47
- };
48
- exports.unpackConnection = unpackConnection;
49
19
  const getBackgroundConnections = async () => {
50
20
  if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
51
21
  const connectionUUIDs = await _SpikeSdk.SpikeSdk.getBackgroundConnections();
52
- const connections = connectionUUIDs.map(uuid => new _SpikeWebhookConnection.SpikeWebhookConnection(uuid));
22
+ const connections = connectionUUIDs.map(uuid => new _SpikeConnection.SpikeConnection(uuid));
53
23
  return connections;
54
24
  };
55
25
  exports.getBackgroundConnections = getBackgroundConnections;
@@ -59,11 +29,6 @@ const ensurePermissionsAreGranted = async permissions => {
59
29
  await _SpikeSdk.SpikeSdk.ensurePermissionsAreGranted(permissions.map(permissionType => permissionType.rawValue));
60
30
  };
61
31
  exports.ensurePermissionsAreGranted = ensurePermissionsAreGranted;
62
- const initialize = () => {
63
- if (!_SpikeSdk.SpikeSdk) throw new _SpikeException.SpikeException();
64
- _SpikeSdk.SpikeSdk.initialize();
65
- };
66
- exports.initialize = initialize;
67
32
  function generateUUID() {
68
33
  const S4 = function () {
69
34
  let str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVXZ';