hypertrack-sdk-react-native 13.2.3 → 13.3.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 (40) hide show
  1. package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
  2. package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
  3. package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
  4. package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
  5. package/android/.gradle/7.2/gc.properties +0 -0
  6. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  7. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  8. package/android/.gradle/checksums/checksums.lock +0 -0
  9. package/android/.gradle/vcs-1/gc.properties +0 -0
  10. package/android/.idea/gradle.xml +15 -0
  11. package/android/.idea/misc.xml +9 -0
  12. package/android/.idea/vcs.xml +6 -0
  13. package/android/gradle.properties +1 -1
  14. package/android/local.properties +8 -0
  15. package/android/src/main/java/com/reactnativehypertracksdk/common/GeotagData.kt +4 -1
  16. package/android/src/main/java/com/reactnativehypertracksdk/common/HyperTrackSdkWrapper.kt +29 -8
  17. package/android/src/main/java/com/reactnativehypertracksdk/common/Serialization.kt +84 -48
  18. package/hypertrack-sdk-react-native.podspec +1 -1
  19. package/ios/common/GeotagData.swift +10 -1
  20. package/ios/common/HyperTrackSDKWrapper.swift +33 -4
  21. package/ios/common/Serialization.swift +46 -2
  22. package/lib/commonjs/HyperTrack/HyperTrack.js +61 -6
  23. package/lib/commonjs/HyperTrack/HyperTrack.js.map +1 -1
  24. package/lib/commonjs/HyperTrack/data_types/OrderStatus.js +2 -0
  25. package/lib/commonjs/HyperTrack/data_types/OrderStatus.js.map +1 -0
  26. package/lib/commonjs/index.js +7 -0
  27. package/lib/commonjs/index.js.map +1 -1
  28. package/lib/module/HyperTrack/HyperTrack.js +61 -6
  29. package/lib/module/HyperTrack/HyperTrack.js.map +1 -1
  30. package/lib/module/HyperTrack/data_types/OrderStatus.js +2 -0
  31. package/lib/module/HyperTrack/data_types/OrderStatus.js.map +1 -0
  32. package/lib/module/index.js +1 -0
  33. package/lib/module/index.js.map +1 -1
  34. package/lib/typescript/HyperTrack/HyperTrack.d.ts +24 -0
  35. package/lib/typescript/HyperTrack/data_types/OrderStatus.d.ts +8 -0
  36. package/lib/typescript/index.d.ts +1 -0
  37. package/package.json +1 -1
  38. package/src/HyperTrack/HyperTrack.ts +95 -6
  39. package/src/HyperTrack/data_types/OrderStatus.ts +11 -0
  40. package/src/index.tsx +1 -0
File without changes
@@ -0,0 +1,2 @@
1
+ #Mon Apr 08 21:33:49 EEST 2024
2
+ gradle.version=7.2
File without changes
@@ -0,0 +1,15 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="GradleMigrationSettings" migrationVersion="1" />
4
+ <component name="GradleSettings">
5
+ <option name="linkedExternalProjectsSettings">
6
+ <GradleProjectSettings>
7
+ <option name="testRunner" value="GRADLE" />
8
+ <option name="distributionType" value="DEFAULT_WRAPPED" />
9
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
10
+ <option name="gradleHome" value="/usr/local/Cellar/gradle/8.2/libexec" />
11
+ <option name="gradleJvm" value="jbr-17" />
12
+ </GradleProjectSettings>
13
+ </option>
14
+ </component>
15
+ </project>
@@ -0,0 +1,9 @@
1
+ <project version="4">
2
+ <component name="ExternalStorageConfigurationManager" enabled="true" />
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
4
+ <output url="file://$PROJECT_DIR$/build/classes" />
5
+ </component>
6
+ <component name="ProjectType">
7
+ <option name="id" value="Android" />
8
+ </component>
9
+ </project>
@@ -0,0 +1,6 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$/../.." vcs="Git" />
5
+ </component>
6
+ </project>
@@ -1,3 +1,3 @@
1
1
  HyperTrackSdk_kotlinVersion=1.6.21
2
- HyperTrackSdk_HyperTrackSDKVersion=7.4.3
2
+ HyperTrackSdk_HyperTrackSDKVersion=7.5.2
3
3
  android.useAndroidX=true
@@ -0,0 +1,8 @@
1
+ ## This file must *NOT* be checked into Version Control Systems,
2
+ # as it contains information specific to your local configuration.
3
+ #
4
+ # Location of the SDK. This is only used by Gradle.
5
+ # For customization when using a Version Control System, please read the
6
+ # header note.
7
+ #Mon Apr 08 21:32:54 EEST 2024
8
+ sdk.dir=/opt/homebrew/share/android-commandlinetools
@@ -1,6 +1,7 @@
1
1
  package com.reactnativehypertracksdk.common
2
2
 
3
3
  import android.location.Location
4
+ import com.hypertrack.sdk.android.HyperTrack
4
5
 
5
6
  /**
6
7
  * The data that represents geotag to create
@@ -9,5 +10,7 @@ import android.location.Location
9
10
  */
10
11
  internal data class GeotagData(
11
12
  val data: Map<String, Any?>,
12
- val expectedLocation: Location?
13
+ val expectedLocation: Location?,
14
+ val orderHandle: String?,
15
+ val orderStatus: HyperTrack.OrderStatus?,
13
16
  )
@@ -1,16 +1,14 @@
1
1
  package com.reactnativehypertracksdk.common
2
2
 
3
- import com.hypertrack.sdk.*
4
3
  import com.hypertrack.sdk.android.HyperTrack
5
- import com.hypertrack.sdk.android.HyperTrack.metadata
6
4
  import com.hypertrack.sdk.android.Json
7
5
  import com.hypertrack.sdk.android.Result
8
6
  import com.reactnativehypertracksdk.common.Serialization.deserializeDynamicPublishableKey
9
- import com.reactnativehypertracksdk.common.Serialization.deserializeIsAvailable
10
- import com.reactnativehypertracksdk.common.Serialization.deserializeName
11
7
  import com.reactnativehypertracksdk.common.Serialization.deserializeGeotagData
8
+ import com.reactnativehypertracksdk.common.Serialization.deserializeIsAvailable
12
9
  import com.reactnativehypertracksdk.common.Serialization.deserializeIsTracking
13
10
  import com.reactnativehypertracksdk.common.Serialization.deserializeMetadata
11
+ import com.reactnativehypertracksdk.common.Serialization.deserializeName
14
12
  import com.reactnativehypertracksdk.common.Serialization.serializeDeviceId
15
13
  import com.reactnativehypertracksdk.common.Serialization.serializeDynamicPublishableKey
16
14
  import com.reactnativehypertracksdk.common.Serialization.serializeErrors
@@ -44,9 +42,22 @@ internal object HyperTrackSdkWrapper {
44
42
  longitude = it.longitude
45
43
  )
46
44
  }
45
+ val orderHandle = geotag.orderHandle
46
+ val orderStatus = geotag.orderStatus
47
47
  if (expectedLocation != null) {
48
- HyperTrack
49
- .addGeotag(geotagMetadata, expectedLocation)
48
+ if (orderHandle != null || orderStatus != null) {
49
+ if (orderHandle == null || orderStatus == null) {
50
+ throw Error("orderHandle and orderStatus must be provided")
51
+ }
52
+ HyperTrack.addGeotag(
53
+ orderHandle = orderHandle,
54
+ orderStatus = orderStatus,
55
+ expectedLocation = expectedLocation,
56
+ metadata = geotagMetadata
57
+ )
58
+ } else {
59
+ HyperTrack.addGeotag(geotagMetadata, expectedLocation)
60
+ }
50
61
  .let {
51
62
  when (it) {
52
63
  is Result.Failure -> {
@@ -59,8 +70,18 @@ internal object HyperTrackSdkWrapper {
59
70
  }
60
71
  }
61
72
  } else {
62
- HyperTrack
63
- .addGeotag(geotagMetadata)
73
+ if (orderHandle != null || orderStatus != null) {
74
+ if (orderHandle == null || orderStatus == null) {
75
+ throw Error("orderHandle and orderStatus must be provided")
76
+ }
77
+ HyperTrack.addGeotag(
78
+ orderHandle = orderHandle,
79
+ orderStatus = orderStatus,
80
+ metadata = geotagMetadata
81
+ )
82
+ } else {
83
+ HyperTrack.addGeotag(geotagMetadata)
84
+ }
64
85
  .let { serializeLocationResult(it) }
65
86
  }.let {
66
87
  Success(it)
@@ -19,6 +19,33 @@ internal object Serialization {
19
19
  }
20
20
  }
21
21
 
22
+ fun deserializeGeotagData(map: Map<String, Any?>): WrapperResult<GeotagData> {
23
+ return parse(map) {
24
+ val data = it
25
+ .get<Map<String, Any?>>(KEY_GEOTAG_DATA)
26
+ .getOrThrow()
27
+ val expectedLocationData = it
28
+ .getOptional<Map<String, Any?>>(KEY_GEOTAG_EXPECTED_LOCATION)
29
+ .getOrThrow()
30
+ val expectedLocation = expectedLocationData?.let {
31
+ deserializeLocation(it).getOrThrow()
32
+ }
33
+ val orderHandle = it
34
+ .getOptional<String>(KEY_GEOTAG_ORDER_HANDLE)
35
+ .getOrThrow()
36
+ val orderStatusData = it
37
+ .getOptional<Map<String, Any?>>(KEY_GEOTAG_ORDER_STATUS)
38
+ .getOrThrow()
39
+ val orderStatus = orderStatusData?.let { deserializeOrderStatus(it).getOrThrow() }
40
+ GeotagData(
41
+ data = data,
42
+ expectedLocation = expectedLocation,
43
+ orderHandle = orderHandle,
44
+ orderStatus = orderStatus
45
+ )
46
+ }
47
+ }
48
+
22
49
  fun deserializeIsAvailable(isAvailable: Map<String, Any?>): WrapperResult<Boolean> {
23
50
  return parse(isAvailable) {
24
51
  it.assertValue<String>(key = KEY_TYPE, value = TYPE_IS_AVAILABLE)
@@ -55,19 +82,6 @@ internal object Serialization {
55
82
  }
56
83
  }
57
84
 
58
- fun deserializeGeotagData(map: Map<String, Any?>): WrapperResult<GeotagData> {
59
- return parse(map) {
60
- val data = it
61
- .get<Map<String, Any?>>(KEY_GEOTAG_DATA)
62
- .getOrThrow()
63
- val locationData = it
64
- .getOptional<Map<String, Any?>>(KEY_GEOTAG_EXPECTED_LOCATION)
65
- .getOrThrow()
66
- val location = locationData?.let { deserializeLocation(it).getOrThrow() }
67
- GeotagData(data, location)
68
- }
69
- }
70
-
71
85
  fun serializeDeviceId(deviceId: String): Map<String, Any?> {
72
86
  return mapOf(
73
87
  KEY_TYPE to TYPE_DEVICE_ID,
@@ -121,20 +135,6 @@ internal object Serialization {
121
135
  )
122
136
  }
123
137
 
124
- fun serializeMetadata(metadata: Map<String, Any?>): Map<String, Any?> {
125
- return mapOf(
126
- KEY_TYPE to TYPE_METADATA,
127
- KEY_VALUE to metadata
128
- )
129
- }
130
-
131
- fun serializeName(name: String): Map<String, Any?> {
132
- return mapOf(
133
- KEY_TYPE to TYPE_NAME,
134
- KEY_VALUE to name
135
- )
136
- }
137
-
138
138
  fun serializeLocateResult(
139
139
  locationResult: Result<HyperTrack.Location, Set<HyperTrack.Error>>
140
140
  ): Map<String, Any?> {
@@ -181,18 +181,31 @@ internal object Serialization {
181
181
  )
182
182
  }
183
183
 
184
- private fun serializeLocationWithDeviation(
185
- locationWithDeviation: HyperTrack.LocationWithDeviation,
186
- ): Map<String, Any?> {
184
+ fun serializeLocation(location: HyperTrack.Location): Map<String, Any?> {
187
185
  return mapOf(
188
- KEY_TYPE to TYPE_LOCATION_WITH_DEVIATION,
186
+ KEY_TYPE to TYPE_LOCATION,
189
187
  KEY_VALUE to mapOf(
190
- KEY_LOCATION to serializeLocation(locationWithDeviation.location),
191
- KEY_DEVIATION to locationWithDeviation.deviation
188
+ KEY_LATITUDE to location.latitude,
189
+ KEY_LONGITUDE to location.longitude
192
190
  )
193
191
  )
194
192
  }
195
193
 
194
+
195
+ fun serializeMetadata(metadata: Map<String, Any?>): Map<String, Any?> {
196
+ return mapOf(
197
+ KEY_TYPE to TYPE_METADATA,
198
+ KEY_VALUE to metadata
199
+ )
200
+ }
201
+
202
+ fun serializeName(name: String): Map<String, Any?> {
203
+ return mapOf(
204
+ KEY_TYPE to TYPE_NAME,
205
+ KEY_VALUE to name
206
+ )
207
+ }
208
+
196
209
  private fun deserializeLocation(map: Map<String, Any?>): WrapperResult<Location> {
197
210
  return parse(map) {
198
211
  it.assertValue<String>(key = KEY_TYPE, value = TYPE_LOCATION)
@@ -214,6 +227,34 @@ internal object Serialization {
214
227
  }
215
228
  }
216
229
 
230
+ private fun deserializeOrderStatus(
231
+ map: Map<String, Any?>
232
+ ): WrapperResult<HyperTrack.OrderStatus> {
233
+ return parse(map) {
234
+ when (it.get<String>(KEY_TYPE).getOrThrow()) {
235
+ TYPE_GEOTAG_ORDER_STATUS_CLOCK_IN -> HyperTrack.OrderStatus.ClockIn
236
+ TYPE_GEOTAG_ORDER_STATUS_CLOCK_OUT -> HyperTrack.OrderStatus.ClockOut
237
+ TYPE_GEOTAG_ORDER_STATUS_CUSTOM -> HyperTrack.OrderStatus.Custom(
238
+ it.get<String>(KEY_VALUE).getOrThrow()
239
+ )
240
+
241
+ else -> throw Error("Unknown order status: $map")
242
+ }
243
+ }
244
+ }
245
+
246
+ private fun serializeLocationWithDeviation(
247
+ locationWithDeviation: HyperTrack.LocationWithDeviation,
248
+ ): Map<String, Any?> {
249
+ return mapOf(
250
+ KEY_TYPE to TYPE_LOCATION_WITH_DEVIATION,
251
+ KEY_VALUE to mapOf(
252
+ KEY_LOCATION to serializeLocation(locationWithDeviation.location),
253
+ KEY_DEVIATION to locationWithDeviation.deviation
254
+ )
255
+ )
256
+ }
257
+
217
258
  private fun serializeFailure(failure: List<Map<String, Any?>>): Map<String, Any?> {
218
259
  return mapOf(
219
260
  KEY_TYPE to TYPE_RESULT_FAILURE,
@@ -235,17 +276,6 @@ internal object Serialization {
235
276
  )
236
277
  }
237
278
 
238
- fun serializeLocation(location: HyperTrack.Location): Map<String, Any?> {
239
- return mapOf(
240
- KEY_TYPE to TYPE_LOCATION,
241
- KEY_VALUE to mapOf(
242
- KEY_LATITUDE to location.latitude,
243
- KEY_LONGITUDE to location.longitude
244
- )
245
- )
246
- }
247
-
248
-
249
279
  private fun serializeLocationError(locationError: HyperTrack.LocationError): Map<String, Any?> {
250
280
  return when (locationError) {
251
281
  HyperTrack.LocationError.NotRunning -> {
@@ -369,11 +399,17 @@ internal object Serialization {
369
399
  private const val TYPE_LOCATION_ERROR_NOT_RUNNING = "notRunning"
370
400
  private const val TYPE_LOCATION_ERROR_STARTING = "starting"
371
401
 
402
+ private const val TYPE_GEOTAG_ORDER_STATUS_CLOCK_IN = "orderStatusClockIn"
403
+ private const val TYPE_GEOTAG_ORDER_STATUS_CLOCK_OUT = "orderStatusClockOut"
404
+ private const val TYPE_GEOTAG_ORDER_STATUS_CUSTOM = "orderStatusCustom"
405
+
372
406
  private const val KEY_LATITUDE = "latitude"
373
407
  private const val KEY_LONGITUDE = "longitude"
374
408
 
375
- const val KEY_DEVIATION = "deviation"
376
- const val KEY_GEOTAG_DATA = "data"
377
- const val KEY_GEOTAG_EXPECTED_LOCATION = "expectedLocation"
378
- const val KEY_LOCATION = "location"
409
+ private const val KEY_DEVIATION = "deviation"
410
+ private const val KEY_GEOTAG_DATA = "data"
411
+ private const val KEY_GEOTAG_EXPECTED_LOCATION = "expectedLocation"
412
+ private const val KEY_GEOTAG_ORDER_HANDLE = "orderHandle"
413
+ private const val KEY_GEOTAG_ORDER_STATUS = "orderStatus"
414
+ private const val KEY_LOCATION = "location"
379
415
  }
@@ -18,7 +18,7 @@ Pod::Spec.new do |s|
18
18
  s.source_files = "ios/**/*.{h,m,mm,swift}"
19
19
 
20
20
  s.dependency "React-Core"
21
- s.dependency 'HyperTrack', '5.4.1'
21
+ s.dependency 'HyperTrack', '5.5.1'
22
22
 
23
23
  # Don't install the dependencies when we run `pod install` in the old architecture.
24
24
  if ENV['RCT_NEW_ARCH_ENABLED'] == '1' then
@@ -3,9 +3,18 @@ import HyperTrack
3
3
  struct GeotagData {
4
4
  let data: [String: Any]
5
5
  let expectedLocation: HyperTrack.Location?
6
+ let orderHandle: String?
7
+ let orderStatus: HyperTrack.OrderStatus?
6
8
 
7
- init(data: [String: Any], expectedLocation: HyperTrack.Location?) {
9
+ init(
10
+ data: [String: Any],
11
+ expectedLocation: HyperTrack.Location?,
12
+ orderHandle: String?,
13
+ orderStatus: HyperTrack.OrderStatus?
14
+ ) {
8
15
  self.data = data
9
16
  self.expectedLocation = expectedLocation
17
+ self.orderHandle = orderHandle
18
+ self.orderStatus = orderStatus
10
19
  }
11
20
  }
@@ -14,12 +14,41 @@ enum FailureResult: Error {
14
14
  func addGeotag(_ args: [String: Any]) -> Result<SuccessResult, FailureResult> {
15
15
  return deserializeGeotagData(args).flatMap { geotagData in
16
16
  if let metadata: HyperTrack.JSON.Object = toJSON(geotagData.data) {
17
+ let expectedLocation = geotagData.expectedLocation
18
+ let orderHandle = geotagData.orderHandle
19
+ let orderStatus = geotagData.orderStatus
20
+
17
21
  if let expectedLocation = geotagData.expectedLocation {
18
- let result = HyperTrack.addGeotag(metadata, expectedLocation: expectedLocation)
19
- return .success(.dict(serializeLocationWithDeviationResult(result)))
22
+ if orderHandle != nil || orderStatus != nil {
23
+ if orderHandle == nil || orderStatus == nil {
24
+ return .failure(.error("orderHandle and orderStatus must be provided"))
25
+ }
26
+ let result = HyperTrack.addGeotag(
27
+ orderHandle: orderHandle!,
28
+ orderStatus: orderStatus!,
29
+ metadata: metadata,
30
+ expectedLocation: expectedLocation
31
+ )
32
+ return .success(.dict(serializeLocationWithDeviationResult(result)))
33
+ } else {
34
+ let result = HyperTrack.addGeotag(metadata, expectedLocation: expectedLocation)
35
+ return .success(.dict(serializeLocationWithDeviationResult(result)))
36
+ }
20
37
  } else {
21
- let result = HyperTrack.addGeotag(metadata)
22
- return .success(.dict(serializeLocationResult(result)))
38
+ if orderHandle != nil || orderStatus != nil {
39
+ if orderHandle == nil || orderStatus == nil {
40
+ return .failure(.error("orderHandle and orderStatus must be provided"))
41
+ }
42
+ let result = HyperTrack.addGeotag(
43
+ orderHandle: orderHandle!,
44
+ orderStatus: orderStatus!,
45
+ metadata: metadata
46
+ )
47
+ return .success(.dict(serializeLocationResult(result)))
48
+ } else {
49
+ let result = HyperTrack.addGeotag(metadata)
50
+ return .success(.dict(serializeLocationResult(result)))
51
+ }
23
52
  }
24
53
  } else {
25
54
  return .failure(.error("Failed to deserialize geotag metadata"))
@@ -32,16 +32,41 @@ func deserializeGeotagData(
32
32
  guard let data = args[keyGeotagData] as? [String: Any] else {
33
33
  return .failure(.fatalError(getParseError(args, key: keyGeotagData)))
34
34
  }
35
+ let orderHandle = args["orderHandle"] as? String
36
+ let orderStatusData = args["orderStatus"] as? [String: Any]
37
+ let orderStatusResult: Result<HyperTrack.OrderStatus, FailureResult>? = if let orderStatusData = orderStatusData {
38
+ deserializeOrderStatus(orderStatusData)
39
+ } else {
40
+ nil
41
+ }
42
+ if case let .failure(failure) = orderStatusResult {
43
+ return .failure(failure)
44
+ }
45
+ let orderStatus: HyperTrack.OrderStatus? = if case let .success(orderStatus) = orderStatusResult {
46
+ orderStatus
47
+ } else {
48
+ nil
49
+ }
35
50
  if let expectedLocationData = args[keyExpectedLocation] as? [String: Any] {
36
51
  let expectedLocation = deserializeLocation(expectedLocationData)
37
52
  switch expectedLocation {
38
53
  case let .failure(failure):
39
54
  return .failure(failure)
40
55
  case let .success(expectedLocation):
41
- return .success(.init(data: data, expectedLocation: expectedLocation))
56
+ return .success(.init(
57
+ data: data,
58
+ expectedLocation: expectedLocation,
59
+ orderHandle: orderHandle,
60
+ orderStatus: orderStatus
61
+ ))
42
62
  }
43
63
  } else {
44
- return .success(.init(data: data, expectedLocation: nil))
64
+ return .success(.init(
65
+ data: data,
66
+ expectedLocation: nil,
67
+ orderHandle: orderHandle,
68
+ orderStatus: orderStatus
69
+ ))
45
70
  }
46
71
  }
47
72
 
@@ -101,6 +126,25 @@ func deserializeName(_ data: [String: Any]) -> Result<String, FailureResult> {
101
126
  return .success(value)
102
127
  }
103
128
 
129
+ func deserializeOrderStatus(_ data: [String: Any]) -> Result<HyperTrack.OrderStatus, FailureResult> {
130
+ guard let type = data[keyType] as? String else {
131
+ return .failure(.fatalError(getParseError(data, key: keyType)))
132
+ }
133
+ switch type {
134
+ case "orderStatusClockIn":
135
+ return .success(.clockIn)
136
+ case "orderStatusClockOut":
137
+ return .success(.clockOut)
138
+ case "orderStatusCustom":
139
+ guard let value = data[keyValue] as? String else {
140
+ return .failure(.fatalError(getParseError(data, key: keyValue)))
141
+ }
142
+ return .success(.custom(value))
143
+ default:
144
+ return .failure(.fatalError(getParseError(data, key: keyType)))
145
+ }
146
+ }
147
+
104
148
  func serializeDeviceID(_ deviceID: String) -> [String: Any] {
105
149
  return [
106
150
  keyType: "deviceID",
@@ -28,11 +28,32 @@ class HyperTrack {
28
28
  /**
29
29
  * Adds a new geotag
30
30
  *
31
+ * @param {string} orderHandle - Order handle
32
+ * @param {OrderStatus} orderStatus - Order status
31
33
  * @param {Object} data - Geotag data JSON
32
34
  * @returns current location if success or LocationError if failure
33
35
  */
34
36
 
35
37
  /**
38
+ * Adds a new geotag with expected location
39
+ *
40
+ * @param {string} orderHandle - Order handle
41
+ * @param {OrderStatus} orderStatus - Order status
42
+ * @param {Object} data - Geotag data JSON
43
+ * @param {Location} expectedLocation - Expected location
44
+ * @returns location with deviation if success or LocationError if failure
45
+ */
46
+
47
+ /**
48
+ * @deprecated
49
+ * Adds a new geotag
50
+ *
51
+ * @param {Object} data - Geotag data JSON
52
+ * @returns current location if success or LocationError if failure
53
+ */
54
+
55
+ /**
56
+ * @deprecated
36
57
  * Adds a new geotag with expected location
37
58
  *
38
59
  * @param {Object} data - Geotag data JSON
@@ -41,30 +62,59 @@ class HyperTrack {
41
62
  */
42
63
 
43
64
  static async addGeotag(...args) {
65
+ if (args.length === 3 && typeof args[0] === 'string' && HyperTrack.isOrderStatus(args[1]) && typeof args[2] === 'object') {
66
+ // addGeotag(orderHandle: string, orderStatus: OrderStatus, data: Object)
67
+ return HyperTrackSdk.addGeotag({
68
+ orderHandle: args[0],
69
+ orderStatus: args[1],
70
+ data: args[2],
71
+ expectedLocation: undefined
72
+ }).then(locationResponse => {
73
+ return this.deserializeLocationResponse(locationResponse);
74
+ });
75
+ }
76
+ if (args.length === 4 && typeof args[0] === 'string' && HyperTrack.isOrderStatus(args[1]) && typeof args[2] === 'object' && HyperTrack.isLocation(args[3])) {
77
+ // addGeotag(orderHandle: string, orderStatus: OrderStatus, data: Object, expectedLocation: Location)
78
+ return HyperTrackSdk.addGeotag({
79
+ orderHandle: args[0],
80
+ orderStatus: args[1],
81
+ data: args[2],
82
+ expectedLocation: {
83
+ type: 'location',
84
+ value: {
85
+ latitude: args[3].latitude,
86
+ longitude: args[3].longitude
87
+ }
88
+ }
89
+ }).then(locationResponse => {
90
+ return this.deserializeLocationWithDeviationResponse(locationResponse);
91
+ });
92
+ }
44
93
  if (args.length === 1 && typeof args[0] === 'object') {
94
+ // addGeotag(data: Object)
45
95
  return HyperTrackSdk.addGeotag({
46
96
  data: args[0],
47
97
  expectedLocation: undefined
48
98
  }).then(locationResponse => {
49
99
  return this.deserializeLocationResponse(locationResponse);
50
100
  });
51
- } else if (args.length === 2 && typeof args[0] === 'object' && HyperTrack.isLocation(args[1])) {
52
- let expectedLocation = args[1];
101
+ }
102
+ if (args.length === 2 && typeof args[0] === 'object' && HyperTrack.isLocation(args[1])) {
103
+ // addGeotag(data: Object, expectedLocation: Location)
53
104
  return HyperTrackSdk.addGeotag({
54
105
  data: args[0],
55
106
  expectedLocation: {
56
107
  type: 'location',
57
108
  value: {
58
- latitude: expectedLocation.latitude,
59
- longitude: expectedLocation.longitude
109
+ latitude: args[1].latitude,
110
+ longitude: args[1].longitude
60
111
  }
61
112
  }
62
113
  }).then(locationResponse => {
63
114
  return this.deserializeLocationWithDeviationResponse(locationResponse);
64
115
  });
65
- } else {
66
- throw new Error('Invalid arguments');
67
116
  }
117
+ throw new Error(`Invalid addGeotag() arguments: ${JSON.stringify(args)}`);
68
118
  }
69
119
 
70
120
  /**
@@ -421,6 +471,11 @@ class HyperTrack {
421
471
  static isLocation(obj) {
422
472
  return 'latitude' in obj && typeof obj.latitude === 'number' && 'longitude' in obj && typeof obj.longitude === 'number';
423
473
  }
474
+
475
+ /** @ignore */
476
+ static isOrderStatus(obj) {
477
+ return 'type' in obj && obj.type.startsWith('orderStatus');
478
+ }
424
479
  }
425
480
  exports.default = HyperTrack;
426
481
  _defineProperty(HyperTrack, "locateSubscription", void 0);