hypertrack-sdk-react-native 13.2.2 → 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.
- package/android/.gradle/7.2/dependencies-accessors/dependencies-accessors.lock +0 -0
- package/android/.gradle/7.2/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/7.2/fileChanges/last-build.bin +0 -0
- package/android/.gradle/7.2/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/7.2/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
- package/android/.gradle/checksums/checksums.lock +0 -0
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.idea/gradle.xml +15 -0
- package/android/.idea/misc.xml +9 -0
- package/android/.idea/vcs.xml +6 -0
- package/android/gradle.properties +1 -1
- package/android/local.properties +8 -0
- package/android/src/main/java/com/reactnativehypertracksdk/common/GeotagData.kt +4 -1
- package/android/src/main/java/com/reactnativehypertracksdk/common/HyperTrackSdkWrapper.kt +29 -8
- package/android/src/main/java/com/reactnativehypertracksdk/common/Serialization.kt +84 -48
- package/hypertrack-sdk-react-native.podspec +1 -1
- package/ios/common/GeotagData.swift +10 -1
- package/ios/common/HyperTrackSDKWrapper.swift +33 -4
- package/ios/common/Serialization.swift +46 -2
- package/lib/commonjs/HyperTrack/HyperTrack.js +61 -6
- package/lib/commonjs/HyperTrack/HyperTrack.js.map +1 -1
- package/lib/commonjs/HyperTrack/data_types/OrderStatus.js +2 -0
- package/lib/commonjs/HyperTrack/data_types/OrderStatus.js.map +1 -0
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/HyperTrack/HyperTrack.js +61 -6
- package/lib/module/HyperTrack/HyperTrack.js.map +1 -1
- package/lib/module/HyperTrack/data_types/OrderStatus.js +2 -0
- package/lib/module/HyperTrack/data_types/OrderStatus.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/HyperTrack/HyperTrack.d.ts +24 -0
- package/lib/typescript/HyperTrack/data_types/OrderStatus.d.ts +8 -0
- package/lib/typescript/index.d.ts +1 -0
- package/package.json +1 -1
- package/src/HyperTrack/HyperTrack.ts +95 -6
- package/src/HyperTrack/data_types/OrderStatus.ts +11 -0
- package/src/index.tsx +1 -0
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
File without changes
|
|
Binary file
|
|
Binary file
|
|
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,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
|
-
|
|
49
|
-
|
|
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
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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
|
|
186
|
+
KEY_TYPE to TYPE_LOCATION,
|
|
189
187
|
KEY_VALUE to mapOf(
|
|
190
|
-
|
|
191
|
-
|
|
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
|
|
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.
|
|
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(
|
|
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
|
-
|
|
19
|
-
|
|
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
|
-
|
|
22
|
-
|
|
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(
|
|
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(
|
|
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
|
-
}
|
|
52
|
-
|
|
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:
|
|
59
|
-
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);
|