@pensasystems/pensa-react-native 0.1.0 → 0.1.1
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/PensaSdkReactNative.podspec +1 -1
- package/android/build.gradle +2 -1
- package/android/src/main/java/com/pensasdkreactnative/PensaListeners.kt +10 -1
- package/android/src/main/java/com/pensasdkreactnative/PensaSdkReactNativeModule.kt +189 -41
- package/ios/PensaEventEmitter.swift +2 -1
- package/ios/PensaListeners.swift +12 -1
- package/ios/PensaSdkReactNative.mm +10 -1
- package/ios/PensaSdkReactNative.swift +162 -44
- package/lib/module/index.js +9 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/types.js +1 -0
- package/lib/module/types.js.map +1 -1
- package/lib/typescript/src/index.d.ts +9 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +53 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +25 -9
- package/src/types.ts +58 -0
package/android/build.gradle
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
|
|
1
2
|
buildscript {
|
|
2
3
|
ext.getExtOrDefault = {name ->
|
|
3
4
|
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['PensaSdkReactNative_' + name]
|
|
@@ -83,7 +84,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
|
|
|
83
84
|
|
|
84
85
|
dependencies {
|
|
85
86
|
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
|
|
86
|
-
implementation "com.pensasystems:pensasdk:1.0.
|
|
87
|
+
implementation "com.pensasystems:pensasdk:1.0.23"
|
|
87
88
|
implementation "com.facebook.react:react-android"
|
|
88
89
|
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
|
|
89
90
|
}
|
|
@@ -2,9 +2,10 @@ package com.pensasdkreactnative
|
|
|
2
2
|
|
|
3
3
|
import com.facebook.react.bridge.ReactApplicationContext
|
|
4
4
|
import com.pensasystems.pensasdk.listener.CantScanEventListener
|
|
5
|
+
import com.pensasystems.pensasdk.listener.CompletedScanWithGuidListener
|
|
5
6
|
import com.pensasystems.pensasdk.listener.ScanUploadListener
|
|
6
7
|
|
|
7
|
-
object PensaListeners : ScanUploadListener, CantScanEventListener {
|
|
8
|
+
object PensaListeners : ScanUploadListener, CantScanEventListener, CompletedScanWithGuidListener {
|
|
8
9
|
|
|
9
10
|
private var emitter: PensaEventEmitterModule? = null
|
|
10
11
|
|
|
@@ -41,4 +42,12 @@ object PensaListeners : ScanUploadListener, CantScanEventListener {
|
|
|
41
42
|
"reason" to cantScanReason
|
|
42
43
|
))
|
|
43
44
|
}
|
|
45
|
+
|
|
46
|
+
override fun onScanCompletedWithGuid(guid: String?, tdlinxId: String, scanId: Int) {
|
|
47
|
+
emitter?.sendEvent("onScanCompletedWithGuid", mapOf(
|
|
48
|
+
"guid" to guid,
|
|
49
|
+
"tdlinxId" to tdlinxId,
|
|
50
|
+
"scanId" to scanId
|
|
51
|
+
))
|
|
52
|
+
}
|
|
44
53
|
}
|
|
@@ -43,6 +43,7 @@ class PensaSdkReactNativeModule(reactContext: ReactApplicationContext) :
|
|
|
43
43
|
.enableLogging(isLoggingEnabled)
|
|
44
44
|
.setScanUploadListener(PensaListeners)
|
|
45
45
|
.setCantScanEventListener(PensaListeners)
|
|
46
|
+
.setCompletedScanWithGuidListener(PensaListeners)
|
|
46
47
|
.build()
|
|
47
48
|
|
|
48
49
|
PensaSdk.initPensa(
|
|
@@ -173,6 +174,22 @@ class PensaSdkReactNativeModule(reactContext: ReactApplicationContext) :
|
|
|
173
174
|
}
|
|
174
175
|
}
|
|
175
176
|
|
|
177
|
+
@ReactMethod
|
|
178
|
+
fun showStoreChecklistWithGuid(globalStoreId: String, guid: String, promise: Promise) {
|
|
179
|
+
val activity = reactApplicationContext.currentActivity
|
|
180
|
+
if (activity != null) {
|
|
181
|
+
PensaSdk.showStoreChecklistWithGuid(
|
|
182
|
+
context = activity,
|
|
183
|
+
globalStoreId = globalStoreId,
|
|
184
|
+
guid = guid,
|
|
185
|
+
onError = { error -> promise.reject("SHOW_STORE_CHECKLIST_WITH_GUID_FAILED", error) }
|
|
186
|
+
)
|
|
187
|
+
promise.resolve(null)
|
|
188
|
+
} else {
|
|
189
|
+
promise.reject("NO_ACTIVITY", "Current activity is null")
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
176
193
|
@ReactMethod
|
|
177
194
|
fun fetchScanStatuses(scanIds: ReadableArray, promise: Promise) {
|
|
178
195
|
try {
|
|
@@ -215,41 +232,88 @@ class PensaSdkReactNativeModule(reactContext: ReactApplicationContext) :
|
|
|
215
232
|
}
|
|
216
233
|
}
|
|
217
234
|
|
|
235
|
+
@ReactMethod
|
|
236
|
+
fun fetchVisitScansStatus(guid: String, promise: Promise) {
|
|
237
|
+
try {
|
|
238
|
+
PensaSdk.fetchVisitScansStatus(
|
|
239
|
+
guid = guid,
|
|
240
|
+
onSuccess = { result ->
|
|
241
|
+
val scans = result.scans
|
|
242
|
+
val map = Arguments.createMap().apply {
|
|
243
|
+
result.guid?.let { putString("guid", it) }
|
|
244
|
+
result.visitStatus?.let { putString("visitStatus", it) }
|
|
245
|
+
if (scans == null) {
|
|
246
|
+
} else {
|
|
247
|
+
val scansArray = Arguments.createArray()
|
|
248
|
+
scans.forEach { scan ->
|
|
249
|
+
val uploadCompleted = scan.uploadCompleted
|
|
250
|
+
scansArray.pushMap(
|
|
251
|
+
Arguments.createMap().apply {
|
|
252
|
+
scan.created?.let { putString("created", it) }
|
|
253
|
+
scan.fastStatus?.let { putString("fastStatus", it) }
|
|
254
|
+
scan.scanId?.let { putInt("scanId", it) }
|
|
255
|
+
scan.status?.let { putString("status", it) }
|
|
256
|
+
when (uploadCompleted) {
|
|
257
|
+
null -> {}
|
|
258
|
+
else -> putBoolean("uploadCompleted", uploadCompleted)
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
)
|
|
262
|
+
}
|
|
263
|
+
putArray("scans", scansArray)
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
promise.resolve(map)
|
|
268
|
+
},
|
|
269
|
+
onError = { error ->
|
|
270
|
+
promise.reject("FETCH_VISIT_SCANS_STATUS_FAILED", error)
|
|
271
|
+
}
|
|
272
|
+
)
|
|
273
|
+
} catch (e: Exception) {
|
|
274
|
+
promise.reject("FETCH_VISIT_SCANS_STATUS_EXCEPTION", e)
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
218
278
|
@ReactMethod
|
|
219
279
|
fun fetchOnDemandReports(
|
|
220
|
-
scanId:
|
|
221
|
-
|
|
280
|
+
scanId: Double?,
|
|
281
|
+
guid: String?,
|
|
282
|
+
projectId: Double?,
|
|
222
283
|
reportTypes: ReadableArray?,
|
|
223
284
|
promise: Promise
|
|
224
285
|
) {
|
|
225
286
|
try {
|
|
226
287
|
val finalReportTypes = parseReportTypes(reportTypes)
|
|
288
|
+
val normalizedScanId = scanId?.toInt()
|
|
289
|
+
val normalizedProjectId = projectId?.toInt()
|
|
227
290
|
|
|
228
291
|
PensaSdk.fetchOnDemandReports(
|
|
229
|
-
scanId =
|
|
230
|
-
|
|
292
|
+
scanId = normalizedScanId,
|
|
293
|
+
guid = guid,
|
|
294
|
+
projectId = normalizedProjectId,
|
|
231
295
|
reportTypes = finalReportTypes,
|
|
232
296
|
onSuccess = { report ->
|
|
233
297
|
val result = Arguments.createMap()
|
|
234
298
|
|
|
235
299
|
fun toProductMap(p: com.pensasystems.pensasdk.model.PensaOnDemandProduct) =
|
|
236
300
|
Arguments.createMap().apply {
|
|
237
|
-
putString("brand",
|
|
238
|
-
p.brandId?.let { putInt("brandId", it) }
|
|
301
|
+
p.brand?.let { putString("brand", it) }
|
|
302
|
+
p.brandId?.let { putInt("brandId", it) }
|
|
239
303
|
|
|
240
|
-
putString("category",
|
|
241
|
-
p.categoryId?.let { putInt("categoryId", it) }
|
|
304
|
+
p.category?.let { putString("category", it) }
|
|
305
|
+
p.categoryId?.let { putInt("categoryId", it) }
|
|
242
306
|
|
|
243
|
-
p.expectedFacings?.let { putInt("expectedFacings", it) }
|
|
244
|
-
p.facings?.let { putInt("facings", it) }
|
|
307
|
+
p.expectedFacings?.let { putInt("expectedFacings", it) }
|
|
308
|
+
p.facings?.let { putInt("facings", it) }
|
|
245
309
|
|
|
246
|
-
putString("manufacturer",
|
|
247
|
-
p.manufacturerId?.let { putInt("manufacturerId", it) }
|
|
310
|
+
p.manufacturer?.let { putString("manufacturer", it) }
|
|
311
|
+
p.manufacturerId?.let { putInt("manufacturerId", it) }
|
|
248
312
|
|
|
249
|
-
putString("product",
|
|
250
|
-
p.productId?.let { putInt("productId", it) }
|
|
313
|
+
p.product?.let { putString("product", it) }
|
|
314
|
+
p.productId?.let { putInt("productId", it) }
|
|
251
315
|
|
|
252
|
-
putString("upc",
|
|
316
|
+
p.upc?.let { putString("upc", it) }
|
|
253
317
|
}
|
|
254
318
|
|
|
255
319
|
fun toBucketMap(b: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket) =
|
|
@@ -259,38 +323,122 @@ class PensaSdkReactNativeModule(reactContext: ReactApplicationContext) :
|
|
|
259
323
|
putArray("productList", arr)
|
|
260
324
|
}
|
|
261
325
|
|
|
262
|
-
fun putBucket(key: String, bucket: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?) {
|
|
263
|
-
if (bucket
|
|
326
|
+
fun putBucket(target: com.facebook.react.bridge.WritableMap, key: String, bucket: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?) {
|
|
327
|
+
if (bucket != null) target.putMap(key, toBucketMap(bucket))
|
|
264
328
|
}
|
|
265
329
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
330
|
+
fun fillReportBuckets(
|
|
331
|
+
target: com.facebook.react.bridge.WritableMap,
|
|
332
|
+
facingsSeen: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
333
|
+
fullFacings: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
334
|
+
fullFacingsAndProductPositions: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
335
|
+
itemsSeen: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
336
|
+
newProducts: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
337
|
+
newProductPackaging: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
338
|
+
missingPriceTag: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
339
|
+
noOos: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
340
|
+
oos: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
341
|
+
productPositions: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
342
|
+
scanFailed: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
343
|
+
scanRejected: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
344
|
+
scanSkipped: com.pensasystems.pensasdk.model.PensaOnDemandReportBucket?,
|
|
345
|
+
) {
|
|
346
|
+
finalReportTypes.distinct().forEach { t ->
|
|
347
|
+
when (t) {
|
|
348
|
+
PensaReportType.FACINGS_SEEN -> putBucket(target, "facingsSeen", facingsSeen)
|
|
349
|
+
PensaReportType.FULL_FACINGS -> putBucket(target, "fullFacings", fullFacings)
|
|
350
|
+
PensaReportType.FULL_FACINGS_AND_PRODUCT_POSITIONS ->
|
|
351
|
+
putBucket(target, "fullFacingsAndProductPositions", fullFacingsAndProductPositions)
|
|
352
|
+
PensaReportType.ITEMS_SEEN -> putBucket(target, "itemsSeen", itemsSeen)
|
|
353
|
+
PensaReportType.NEW_PRODUCTS -> putBucket(target, "newProducts", newProducts)
|
|
354
|
+
PensaReportType.NEW_PRODUCT_PACKAGING -> putBucket(target, "newProductPackaging", newProductPackaging)
|
|
355
|
+
PensaReportType.MISSING_PRICE_TAG -> putBucket(target, "missingPriceTag", missingPriceTag)
|
|
356
|
+
PensaReportType.NO_OOS -> putBucket(target, "noOos", noOos)
|
|
357
|
+
PensaReportType.OOS -> putBucket(target, "oos", oos)
|
|
358
|
+
PensaReportType.PRODUCT_POSITIONS -> putBucket(target, "productPositions", productPositions)
|
|
359
|
+
PensaReportType.SCAN_FAILED -> putBucket(target, "scanFailed", scanFailed)
|
|
360
|
+
PensaReportType.SCAN_REJECTED -> putBucket(target, "scanRejected", scanRejected)
|
|
361
|
+
PensaReportType.SCAN_SKIPPED -> putBucket(target, "scanSkipped", scanSkipped)
|
|
362
|
+
}
|
|
282
363
|
}
|
|
283
364
|
}
|
|
284
365
|
|
|
366
|
+
fillReportBuckets(
|
|
367
|
+
result,
|
|
368
|
+
report.facingsSeen,
|
|
369
|
+
report.fullFacings,
|
|
370
|
+
report.fullFacingsAndProductPositions,
|
|
371
|
+
report.itemsSeen,
|
|
372
|
+
report.newProducts,
|
|
373
|
+
report.newProductPackaging,
|
|
374
|
+
report.missingPriceTag,
|
|
375
|
+
report.noOos,
|
|
376
|
+
report.oos,
|
|
377
|
+
report.productPositions,
|
|
378
|
+
report.scanFailed,
|
|
379
|
+
report.scanRejected,
|
|
380
|
+
report.scanSkipped
|
|
381
|
+
)
|
|
382
|
+
|
|
285
383
|
// Other fields
|
|
286
|
-
report.projectId?.let { result.putInt("projectId", it) }
|
|
287
|
-
result.putString("projectName",
|
|
288
|
-
report.projectReportId?.let { result.putInt("projectReportId", it) }
|
|
289
|
-
result.putString("projectReportName",
|
|
290
|
-
result.putString("realogramSignedUrl",
|
|
291
|
-
report.shelfId?.let { result.putInt("shelfId", it) }
|
|
292
|
-
result.putString("shelfName",
|
|
293
|
-
result.putString("status",
|
|
384
|
+
report.projectId?.let { result.putInt("projectId", it) }
|
|
385
|
+
report.projectName?.let { result.putString("projectName", it) }
|
|
386
|
+
report.projectReportId?.let { result.putInt("projectReportId", it) }
|
|
387
|
+
report.projectReportName?.let { result.putString("projectReportName", it) }
|
|
388
|
+
report.realogramSignedUrl?.let { result.putString("realogramSignedUrl", it) }
|
|
389
|
+
report.shelfId?.let { result.putInt("shelfId", it) }
|
|
390
|
+
report.shelfName?.let { result.putString("shelfName", it) }
|
|
391
|
+
report.status?.let { result.putString("status", it) }
|
|
392
|
+
val scans = report.scans
|
|
393
|
+
if (scans != null) {
|
|
394
|
+
val scansArray = Arguments.createArray()
|
|
395
|
+
scans.forEach { scan ->
|
|
396
|
+
scansArray.pushMap(
|
|
397
|
+
Arguments.createMap().apply {
|
|
398
|
+
fillReportBuckets(
|
|
399
|
+
this,
|
|
400
|
+
scan.facingsSeen,
|
|
401
|
+
scan.fullFacings,
|
|
402
|
+
scan.fullFacingsAndProductPositions,
|
|
403
|
+
scan.itemsSeen,
|
|
404
|
+
scan.newProducts,
|
|
405
|
+
scan.newProductPackaging,
|
|
406
|
+
scan.missingPriceTag,
|
|
407
|
+
scan.noOos,
|
|
408
|
+
scan.oos,
|
|
409
|
+
scan.productPositions,
|
|
410
|
+
scan.scanFailed,
|
|
411
|
+
scan.scanRejected,
|
|
412
|
+
scan.scanSkipped
|
|
413
|
+
)
|
|
414
|
+
scan.projectId?.let { putInt("projectId", it) }
|
|
415
|
+
scan.projectName?.let { putString("projectName", it) }
|
|
416
|
+
scan.projectReportId?.let { putInt("projectReportId", it) }
|
|
417
|
+
scan.projectReportName?.let { putString("projectReportName", it) }
|
|
418
|
+
scan.realogramSignedUrl?.let { putString("realogramSignedUrl", it) }
|
|
419
|
+
scan.scanId?.let { putInt("scanId", it) }
|
|
420
|
+
scan.shelfId?.let { putInt("shelfId", it) }
|
|
421
|
+
scan.shelfName?.let { putString("shelfName", it) }
|
|
422
|
+
scan.status?.let { putString("status", it) }
|
|
423
|
+
}
|
|
424
|
+
)
|
|
425
|
+
}
|
|
426
|
+
result.putArray("scans", scansArray)
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
val visit = report.visit
|
|
430
|
+
if (visit != null) {
|
|
431
|
+
result.putMap(
|
|
432
|
+
"visit",
|
|
433
|
+
Arguments.createMap().apply {
|
|
434
|
+
visit.endTime?.let { putString("endTime", it) }
|
|
435
|
+
visit.identifier?.let { putString("identifier", it) }
|
|
436
|
+
visit.startTime?.let { putString("startTime", it) }
|
|
437
|
+
visit.storeName?.let { putString("storeName", it) }
|
|
438
|
+
visit.storeTdlinx?.let { putString("storeTdlinx", it) }
|
|
439
|
+
}
|
|
440
|
+
)
|
|
441
|
+
}
|
|
294
442
|
|
|
295
443
|
promise.resolve(result)
|
|
296
444
|
},
|
package/ios/PensaListeners.swift
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import Foundation
|
|
2
2
|
import PensaSdk
|
|
3
3
|
|
|
4
|
-
class PensaListeners: NSObject, ScanUploadListener, CantScanEventListener {
|
|
4
|
+
class PensaListeners: NSObject, ScanUploadListener, CantScanEventListener, CompletedScanWithGuidListener {
|
|
5
5
|
|
|
6
6
|
static let shared = PensaListeners()
|
|
7
7
|
|
|
@@ -34,4 +34,15 @@ class PensaListeners: NSObject, ScanUploadListener, CantScanEventListener {
|
|
|
34
34
|
body: ["tdlinxId": tdlinxId, "scanAreaId": scanAreaId, "reason": cantScanReason]
|
|
35
35
|
)
|
|
36
36
|
}
|
|
37
|
+
|
|
38
|
+
func onScanCompletedWithGuid(guid: String?, tdlinxId: String, scanId: Int) {
|
|
39
|
+
PensaEventEmitter.shared?.sendEvent(
|
|
40
|
+
withName: "onScanCompletedWithGuid",
|
|
41
|
+
body: [
|
|
42
|
+
"guid": guid ?? NSNull(),
|
|
43
|
+
"tdlinxId": tdlinxId,
|
|
44
|
+
"scanId": scanId
|
|
45
|
+
]
|
|
46
|
+
)
|
|
47
|
+
}
|
|
37
48
|
}
|
|
@@ -37,12 +37,21 @@ RCT_EXTERN_METHOD(showStoreChecklist:(NSString *)globalStoreId
|
|
|
37
37
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
38
38
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
39
39
|
|
|
40
|
+
RCT_EXTERN_METHOD(showStoreChecklistWithGuid:(NSString *)globalStoreId
|
|
41
|
+
guid:(NSString *)guid
|
|
42
|
+
withResolver:(RCTPromiseResolveBlock)resolve
|
|
43
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
44
|
+
|
|
40
45
|
RCT_EXTERN_METHOD(fetchScanStatuses:(NSArray *)scanIds
|
|
41
46
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
42
47
|
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
43
48
|
|
|
49
|
+
RCT_EXTERN_METHOD(fetchVisitScansStatus:(NSString *)guid
|
|
50
|
+
withResolver:(RCTPromiseResolveBlock)resolve
|
|
51
|
+
withRejecter:(RCTPromiseRejectBlock)reject)
|
|
44
52
|
|
|
45
|
-
RCT_EXTERN_METHOD(fetchOnDemandReports:(
|
|
53
|
+
RCT_EXTERN_METHOD(fetchOnDemandReports:(nullable NSNumber *)scanId
|
|
54
|
+
guid:(nullable NSString *)guid
|
|
46
55
|
projectId:(nullable NSNumber *)projectId
|
|
47
56
|
reportTypes:(nullable NSArray *)reportTypes
|
|
48
57
|
withResolver:(RCTPromiseResolveBlock)resolve
|
|
@@ -27,6 +27,7 @@ class PensaSdkReactNative: NSObject {
|
|
|
27
27
|
.setLoggingEnabled(loggingEnabled)
|
|
28
28
|
.setScanUploadListener(PensaListeners.shared)
|
|
29
29
|
.setCantScanEventListener(PensaListeners.shared)
|
|
30
|
+
.setCompletedScanWithGuidListener(PensaListeners.shared)
|
|
30
31
|
.build()
|
|
31
32
|
|
|
32
33
|
DispatchQueue.main.async {
|
|
@@ -119,6 +120,23 @@ class PensaSdkReactNative: NSObject {
|
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
122
|
|
|
123
|
+
@objc(showStoreChecklistWithGuid:guid:withResolver:withRejecter:)
|
|
124
|
+
func showStoreChecklistWithGuid(globalStoreId: NSString,
|
|
125
|
+
guid: NSString,
|
|
126
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
127
|
+
reject: @escaping RCTPromiseRejectBlock) {
|
|
128
|
+
DispatchQueue.main.async {
|
|
129
|
+
Pensa.shared.showStoreChecklistWithGuid(
|
|
130
|
+
globalStoreId: globalStoreId as String,
|
|
131
|
+
guid: guid as String,
|
|
132
|
+
onError: { error in
|
|
133
|
+
reject("SHOW_STORE_CHECKLIST_WITH_GUID_FAILED", error.localizedDescription, error)
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
resolve(nil)
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
|
|
122
140
|
@objc(fetchScanStatuses:withResolver:withRejecter:)
|
|
123
141
|
func fetchScanStatuses(
|
|
124
142
|
scanIds: [NSNumber],
|
|
@@ -161,16 +179,46 @@ class PensaSdkReactNative: NSObject {
|
|
|
161
179
|
)
|
|
162
180
|
}
|
|
163
181
|
|
|
164
|
-
@objc(
|
|
182
|
+
@objc(fetchVisitScansStatus:withResolver:withRejecter:)
|
|
183
|
+
func fetchVisitScansStatus(
|
|
184
|
+
guid: NSString,
|
|
185
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
186
|
+
reject: @escaping RCTPromiseRejectBlock
|
|
187
|
+
) {
|
|
188
|
+
Pensa.shared.fetchVisitScansStatus(
|
|
189
|
+
guid: guid as String,
|
|
190
|
+
onSuccess: { result in
|
|
191
|
+
let scans = result.scans?.map { scan in
|
|
192
|
+
var mapped: [String: Any] = [:]
|
|
193
|
+
if let created = scan.created { mapped["created"] = created }
|
|
194
|
+
if let fastStatus = scan.fastStatus { mapped["fastStatus"] = fastStatus }
|
|
195
|
+
if let scanId = scan.scanId { mapped["scanId"] = scanId }
|
|
196
|
+
if let status = scan.status { mapped["status"] = status }
|
|
197
|
+
if let uploadCompleted = scan.uploadCompleted { mapped["uploadCompleted"] = uploadCompleted }
|
|
198
|
+
return mapped
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
var response: [String: Any] = [:]
|
|
202
|
+
if let guidValue = result.guid { response["guid"] = guidValue }
|
|
203
|
+
if let scans = scans { response["scans"] = scans }
|
|
204
|
+
if let visitStatus = result.visitStatus { response["visitStatus"] = visitStatus }
|
|
205
|
+
resolve(response)
|
|
206
|
+
},
|
|
207
|
+
onError: { error in
|
|
208
|
+
reject("FETCH_VISIT_SCANS_STATUS_FAILED", error.localizedDescription, error)
|
|
209
|
+
}
|
|
210
|
+
)
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
@objc(fetchOnDemandReports:guid:projectId:reportTypes:withResolver:withRejecter:)
|
|
165
214
|
func fetchOnDemandReports(
|
|
166
|
-
scanId: NSNumber
|
|
215
|
+
scanId: NSNumber?,
|
|
216
|
+
guid: NSString?,
|
|
167
217
|
projectId: NSNumber?,
|
|
168
218
|
reportTypes: NSArray?,
|
|
169
219
|
resolve: @escaping RCTPromiseResolveBlock,
|
|
170
220
|
reject: @escaping RCTPromiseRejectBlock
|
|
171
221
|
) {
|
|
172
|
-
func rn(_ value: Any?) -> Any { value ?? NSNull() }
|
|
173
|
-
|
|
174
222
|
let types: [PensaReportType] = {
|
|
175
223
|
guard let arr = reportTypes as? [String], !arr.isEmpty else { return [.itemsSeen] }
|
|
176
224
|
let mapped = arr.compactMap { PensaReportType(rawValue: $0) }
|
|
@@ -178,71 +226,141 @@ class PensaSdkReactNative: NSObject {
|
|
|
178
226
|
}()
|
|
179
227
|
|
|
180
228
|
Pensa.shared.fetchOnDemandReports(
|
|
181
|
-
scanId: scanId
|
|
229
|
+
scanId: scanId?.intValue,
|
|
230
|
+
guid: guid as String?,
|
|
182
231
|
projectId: projectId?.intValue,
|
|
183
232
|
reportTypes: types,
|
|
184
233
|
onSuccess: { report in
|
|
185
234
|
|
|
186
|
-
var result: [String: Any] = [
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
235
|
+
var result: [String: Any] = [:]
|
|
236
|
+
if let shelfId = report.shelfId { result["shelfId"] = shelfId }
|
|
237
|
+
if let shelfName = report.shelfName { result["shelfName"] = shelfName }
|
|
238
|
+
if let status = report.status { result["status"] = status }
|
|
239
|
+
if let projectId = report.projectId { result["projectId"] = projectId }
|
|
240
|
+
if let projectName = report.projectName { result["projectName"] = projectName }
|
|
241
|
+
if let projectReportId = report.projectReportId { result["projectReportId"] = projectReportId }
|
|
242
|
+
if let projectReportName = report.projectReportName { result["projectReportName"] = projectReportName }
|
|
243
|
+
if let realogramSignedUrl = report.realogramSignedUrl { result["realogramSignedUrl"] = realogramSignedUrl }
|
|
244
|
+
|
|
245
|
+
func toProduct(_ product: PensaOnDemandProduct) -> [String: Any] {
|
|
246
|
+
var mapped: [String: Any] = [:]
|
|
247
|
+
if let brand = product.brand { mapped["brand"] = brand }
|
|
248
|
+
if let brandId = product.brandId { mapped["brandId"] = brandId }
|
|
249
|
+
if let category = product.category { mapped["category"] = category }
|
|
250
|
+
if let categoryId = product.categoryId { mapped["categoryId"] = categoryId }
|
|
251
|
+
if let expectedFacings = product.expectedFacings { mapped["expectedFacings"] = expectedFacings }
|
|
252
|
+
if let facings = product.facings { mapped["facings"] = facings }
|
|
253
|
+
if let manufacturer = product.manufacturer { mapped["manufacturer"] = manufacturer }
|
|
254
|
+
if let manufacturerId = product.manufacturerId { mapped["manufacturerId"] = manufacturerId }
|
|
255
|
+
if let productName = product.product { mapped["product"] = productName }
|
|
256
|
+
if let productId = product.productId { mapped["productId"] = productId }
|
|
257
|
+
if let upc = product.upc { mapped["upc"] = upc }
|
|
258
|
+
return mapped
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
func toBucket(_ bucket: PensaOnDemandReportBucket?) -> [String: Any]? {
|
|
262
|
+
guard let bucket = bucket else { return nil }
|
|
199
263
|
let products: [[String: Any]] = bucket.productList.map { p in
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
"manufacturerId": rn(p.manufacturerId),
|
|
209
|
-
"product": rn(p.product),
|
|
210
|
-
"productId": rn(p.productId),
|
|
211
|
-
"upc": rn(p.upc)
|
|
212
|
-
]
|
|
264
|
+
toProduct(p)
|
|
265
|
+
}
|
|
266
|
+
return ["productList": products]
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
func addBucket(_ target: inout [String: Any], _ key: String, _ bucket: PensaOnDemandReportBucket?) {
|
|
270
|
+
if let mapped = toBucket(bucket) {
|
|
271
|
+
target[key] = mapped
|
|
213
272
|
}
|
|
214
|
-
result[key] = ["productList": products]
|
|
215
273
|
}
|
|
216
274
|
|
|
217
275
|
for t in types {
|
|
218
276
|
switch t {
|
|
219
277
|
case .itemsSeen:
|
|
220
|
-
addBucket("itemsSeen", report.itemsSeen?.report)
|
|
278
|
+
addBucket(&result, "itemsSeen", report.itemsSeen?.report)
|
|
221
279
|
case .facingsSeen:
|
|
222
|
-
addBucket("facingsSeen", report.facingsSeen?.report)
|
|
280
|
+
addBucket(&result, "facingsSeen", report.facingsSeen?.report)
|
|
223
281
|
case .fullFacings:
|
|
224
|
-
addBucket("fullFacings", report.fullFacings?.report)
|
|
282
|
+
addBucket(&result, "fullFacings", report.fullFacings?.report)
|
|
225
283
|
case .fullFacingsAndProductPositions:
|
|
226
|
-
addBucket("fullFacingsAndProductPositions", report.fullFacingsAndProductPositions?.report)
|
|
284
|
+
addBucket(&result, "fullFacingsAndProductPositions", report.fullFacingsAndProductPositions?.report)
|
|
227
285
|
case .newProducts:
|
|
228
|
-
addBucket("newProducts", report.newProducts?.report)
|
|
286
|
+
addBucket(&result, "newProducts", report.newProducts?.report)
|
|
229
287
|
case .newProductPackaging:
|
|
230
|
-
addBucket("newProductPackaging", report.newProductPackaging?.report)
|
|
288
|
+
addBucket(&result, "newProductPackaging", report.newProductPackaging?.report)
|
|
289
|
+
case .missingPriceTag:
|
|
290
|
+
addBucket(&result, "missingPriceTag", report.missingPriceTag?.report)
|
|
231
291
|
case .noOos:
|
|
232
|
-
addBucket("noOos", report.noOos?.report)
|
|
292
|
+
addBucket(&result, "noOos", report.noOos?.report)
|
|
233
293
|
case .oos:
|
|
234
|
-
addBucket("oos", report.oos?.report)
|
|
294
|
+
addBucket(&result, "oos", report.oos?.report)
|
|
235
295
|
case .productPositions:
|
|
236
|
-
addBucket("productPositions", report.productPositions?.report)
|
|
296
|
+
addBucket(&result, "productPositions", report.productPositions?.report)
|
|
237
297
|
case .scanFailed:
|
|
238
|
-
addBucket("scanFailed", report.scanFailed?.report)
|
|
298
|
+
addBucket(&result, "scanFailed", report.scanFailed?.report)
|
|
239
299
|
case .scanRejected:
|
|
240
|
-
addBucket("scanRejected", report.scanRejected?.report)
|
|
300
|
+
addBucket(&result, "scanRejected", report.scanRejected?.report)
|
|
241
301
|
case .scanSkipped:
|
|
242
|
-
addBucket("scanSkipped", report.scanSkipped?.report)
|
|
302
|
+
addBucket(&result, "scanSkipped", report.scanSkipped?.report)
|
|
243
303
|
}
|
|
244
304
|
}
|
|
245
305
|
|
|
306
|
+
if let scans = report.scans {
|
|
307
|
+
result["scans"] = scans.map { scan in
|
|
308
|
+
var scanResult: [String: Any] = [:]
|
|
309
|
+
if let projectId = scan.projectId { scanResult["projectId"] = projectId }
|
|
310
|
+
if let projectName = scan.projectName { scanResult["projectName"] = projectName }
|
|
311
|
+
if let projectReportId = scan.projectReportId { scanResult["projectReportId"] = projectReportId }
|
|
312
|
+
if let projectReportName = scan.projectReportName { scanResult["projectReportName"] = projectReportName }
|
|
313
|
+
if let realogramSignedUrl = scan.realogramSignedUrl { scanResult["realogramSignedUrl"] = realogramSignedUrl }
|
|
314
|
+
if let scanId = scan.scanId { scanResult["scanId"] = scanId }
|
|
315
|
+
if let shelfId = scan.shelfId { scanResult["shelfId"] = shelfId }
|
|
316
|
+
if let shelfName = scan.shelfName { scanResult["shelfName"] = shelfName }
|
|
317
|
+
if let status = scan.status { scanResult["status"] = status }
|
|
318
|
+
|
|
319
|
+
for t in types {
|
|
320
|
+
switch t {
|
|
321
|
+
case .itemsSeen:
|
|
322
|
+
addBucket(&scanResult, "itemsSeen", scan.itemsSeen?.report)
|
|
323
|
+
case .facingsSeen:
|
|
324
|
+
addBucket(&scanResult, "facingsSeen", scan.facingsSeen?.report)
|
|
325
|
+
case .fullFacings:
|
|
326
|
+
addBucket(&scanResult, "fullFacings", scan.fullFacings?.report)
|
|
327
|
+
case .fullFacingsAndProductPositions:
|
|
328
|
+
addBucket(&scanResult, "fullFacingsAndProductPositions", scan.fullFacingsAndProductPositions?.report)
|
|
329
|
+
case .newProducts:
|
|
330
|
+
addBucket(&scanResult, "newProducts", scan.newProducts?.report)
|
|
331
|
+
case .newProductPackaging:
|
|
332
|
+
addBucket(&scanResult, "newProductPackaging", scan.newProductPackaging?.report)
|
|
333
|
+
case .missingPriceTag:
|
|
334
|
+
addBucket(&scanResult, "missingPriceTag", scan.missingPriceTag?.report)
|
|
335
|
+
case .noOos:
|
|
336
|
+
addBucket(&scanResult, "noOos", scan.noOos?.report)
|
|
337
|
+
case .oos:
|
|
338
|
+
addBucket(&scanResult, "oos", scan.oos?.report)
|
|
339
|
+
case .productPositions:
|
|
340
|
+
addBucket(&scanResult, "productPositions", scan.productPositions?.report)
|
|
341
|
+
case .scanFailed:
|
|
342
|
+
addBucket(&scanResult, "scanFailed", scan.scanFailed?.report)
|
|
343
|
+
case .scanRejected:
|
|
344
|
+
addBucket(&scanResult, "scanRejected", scan.scanRejected?.report)
|
|
345
|
+
case .scanSkipped:
|
|
346
|
+
addBucket(&scanResult, "scanSkipped", scan.scanSkipped?.report)
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
return scanResult
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if let visit = report.visit {
|
|
355
|
+
var mappedVisit: [String: Any] = [:]
|
|
356
|
+
if let endTime = visit.endTime { mappedVisit["endTime"] = endTime }
|
|
357
|
+
if let identifier = visit.identifier { mappedVisit["identifier"] = identifier }
|
|
358
|
+
if let startTime = visit.startTime { mappedVisit["startTime"] = startTime }
|
|
359
|
+
if let storeName = visit.storeName { mappedVisit["storeName"] = storeName }
|
|
360
|
+
if let storeTdlinx = visit.storeTdlinx { mappedVisit["storeTdlinx"] = storeTdlinx }
|
|
361
|
+
result["visit"] = mappedVisit
|
|
362
|
+
}
|
|
363
|
+
|
|
246
364
|
resolve(result)
|
|
247
365
|
},
|
|
248
366
|
onError: { error in
|
package/lib/module/index.js
CHANGED
|
@@ -38,12 +38,18 @@ export const showStockingScreen = () => {
|
|
|
38
38
|
export const showStoreChecklist = (globalStoreId, guid, sectionKey) => {
|
|
39
39
|
return PensaSdkReactNative.showStoreChecklist(globalStoreId, guid, sectionKey);
|
|
40
40
|
};
|
|
41
|
+
export const showStoreChecklistWithGuid = (globalStoreId, guid) => {
|
|
42
|
+
return PensaSdkReactNative.showStoreChecklistWithGuid(globalStoreId, guid);
|
|
43
|
+
};
|
|
41
44
|
export const fetchScanStatuses = scanIds => {
|
|
42
45
|
return PensaSdkReactNative.fetchScanStatuses(scanIds);
|
|
43
46
|
};
|
|
44
|
-
export
|
|
45
|
-
const finalReportTypes = reportTypes && reportTypes.length > 0 ? reportTypes : [PensaReportType.ITEMS_SEEN];
|
|
46
|
-
return PensaSdkReactNative.fetchOnDemandReports(scanId, projectId ?? null, finalReportTypes);
|
|
47
|
+
export function fetchOnDemandReports(params) {
|
|
48
|
+
const finalReportTypes = params.reportTypes && params.reportTypes.length > 0 ? params.reportTypes : [PensaReportType.ITEMS_SEEN];
|
|
49
|
+
return PensaSdkReactNative.fetchOnDemandReports(params.scanId ?? null, params.guid ?? null, params.projectId ?? null, finalReportTypes);
|
|
50
|
+
}
|
|
51
|
+
export const fetchVisitScansStatus = guid => {
|
|
52
|
+
return PensaSdkReactNative.fetchVisitScansStatus(guid);
|
|
47
53
|
};
|
|
48
54
|
export const fetchProductImageBase64 = productId => {
|
|
49
55
|
return PensaSdkReactNative.fetchProductImageBase64(productId);
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeModules","Platform","PensaReportType","LINKING_ERROR","select","ios","default","PensaSdkReactNative","Proxy","get","Error","initPensa","config","isPensaStarted","showShelfScans","showProductScans","showStoreSearchView","showStoresScreen","showScanArea","scanId","storeId","globalStoreId","showStockingScreen","showStoreChecklist","guid","sectionKey","fetchScanStatuses","scanIds","fetchOnDemandReports","
|
|
1
|
+
{"version":3,"names":["NativeModules","Platform","PensaReportType","LINKING_ERROR","select","ios","default","PensaSdkReactNative","Proxy","get","Error","initPensa","config","isPensaStarted","showShelfScans","showProductScans","showStoreSearchView","showStoresScreen","showScanArea","scanId","storeId","globalStoreId","showStockingScreen","showStoreChecklist","guid","sectionKey","showStoreChecklistWithGuid","fetchScanStatuses","scanIds","fetchOnDemandReports","params","finalReportTypes","reportTypes","length","ITEMS_SEEN","projectId","fetchVisitScansStatus","fetchProductImageBase64","productId","fetchShelves"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/types.js
CHANGED
|
@@ -7,6 +7,7 @@ export let PensaReportType = /*#__PURE__*/function (PensaReportType) {
|
|
|
7
7
|
PensaReportType["ITEMS_SEEN"] = "ITEMS_SEEN";
|
|
8
8
|
PensaReportType["NEW_PRODUCTS"] = "NEW_PRODUCTS";
|
|
9
9
|
PensaReportType["NEW_PRODUCT_PACKAGING"] = "NEW_PRODUCT_PACKAGING";
|
|
10
|
+
PensaReportType["MISSING_PRICE_TAG"] = "MISSING_PRICE_TAG";
|
|
10
11
|
PensaReportType["NO_OOS"] = "NO_OOS";
|
|
11
12
|
PensaReportType["OOS"] = "OOS";
|
|
12
13
|
PensaReportType["PRODUCT_POSITIONS"] = "PRODUCT_POSITIONS";
|
package/lib/module/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["PensaReportType"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;
|
|
1
|
+
{"version":3,"names":["PensaReportType"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AA+IA,WAAYA,eAAe,0BAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAfA,eAAe;EAAA,OAAfA,eAAe;AAAA","ignoreList":[]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PensaOnDemandReport, PensaScanStatus, PensaShelfItem } from './types';
|
|
1
|
+
import type { PensaOnDemandReport, PensaScanStatus, PensaShelfItem, PensaVisitScansStatus } from './types';
|
|
2
2
|
import { PensaReportType } from './types';
|
|
3
3
|
export declare const initPensa: (config: {
|
|
4
4
|
clientId: string;
|
|
@@ -13,8 +13,15 @@ export declare const showStoresScreen: () => Promise<void>;
|
|
|
13
13
|
export declare const showScanArea: (scanId: number, storeId?: number, globalStoreId?: string) => Promise<void>;
|
|
14
14
|
export declare const showStockingScreen: () => Promise<void>;
|
|
15
15
|
export declare const showStoreChecklist: (globalStoreId: string, guid?: string, sectionKey?: string) => Promise<void>;
|
|
16
|
+
export declare const showStoreChecklistWithGuid: (globalStoreId: string, guid: string) => Promise<void>;
|
|
16
17
|
export declare const fetchScanStatuses: (scanIds: number[]) => Promise<PensaScanStatus[]>;
|
|
17
|
-
export declare
|
|
18
|
+
export declare function fetchOnDemandReports(params: {
|
|
19
|
+
scanId?: number | null;
|
|
20
|
+
guid?: string | null;
|
|
21
|
+
projectId?: number | null;
|
|
22
|
+
reportTypes?: PensaReportType[];
|
|
23
|
+
}): Promise<PensaOnDemandReport>;
|
|
24
|
+
export declare const fetchVisitScansStatus: (guid: string) => Promise<PensaVisitScansStatus>;
|
|
18
25
|
export declare const fetchProductImageBase64: (productId: number) => Promise<string>;
|
|
19
26
|
export declare const fetchShelves: (globalStoreId: string) => Promise<PensaShelfItem[]>;
|
|
20
27
|
export * from './events';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,qBAAqB,EACtB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmB1C,eAAO,MAAM,SAAS,GAAI,QAAQ;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,KAAG,OAAO,CAAC,IAAI,CAEf,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,OAAO,CAAC,OAAO,CAEhD,CAAC;AAEF,eAAO,MAAM,cAAc,QAAO,OAAO,CAAC,IAAI,CAE7C,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,OAAO,CAAC,IAAI,CAE/C,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAO,OAAO,CAAC,IAAI,CAElD,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,OAAO,CAAC,IAAI,CAE/C,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,QAAQ,MAAM,EACd,UAAU,MAAM,EAChB,gBAAgB,MAAM,KACrB,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,eAAO,MAAM,kBAAkB,QAAO,OAAO,CAAC,IAAI,CAEjD,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC7B,eAAe,MAAM,EACrB,OAAO,MAAM,EACb,aAAa,MAAM,KAClB,OAAO,CAAC,IAAI,CAMd,CAAC;AAEF,eAAO,MAAM,0BAA0B,GACrC,eAAe,MAAM,EACrB,MAAM,MAAM,KACX,OAAO,CAAC,IAAI,CAEd,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,SAAS,MAAM,EAAE,KAChB,OAAO,CAAC,eAAe,EAAE,CAE3B,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAY/B;AAED,eAAO,MAAM,qBAAqB,GAChC,MAAM,MAAM,KACX,OAAO,CAAC,qBAAqB,CAE/B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAAI,WAAW,MAAM,KAAG,OAAO,CAAC,MAAM,CAEzE,CAAC;AAEF,eAAO,MAAM,YAAY,GACvB,eAAe,MAAM,KACpB,OAAO,CAAC,cAAc,EAAE,CAE1B,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -17,11 +17,17 @@ export type OnCantScanReported = {
|
|
|
17
17
|
scanAreaId: string;
|
|
18
18
|
reason: string;
|
|
19
19
|
};
|
|
20
|
+
export type OnScanCompletedWithGuid = {
|
|
21
|
+
guid: string | null;
|
|
22
|
+
tdlinxId: string;
|
|
23
|
+
scanId: number;
|
|
24
|
+
};
|
|
20
25
|
export type PensaEventPayloads = {
|
|
21
26
|
onScanUploadProgressUpdate: OnScanUploadProgressUpdate;
|
|
22
27
|
onScanUploadCompleted: OnScanUploadCompleted;
|
|
23
28
|
onScanUploadFailed: OnScanUploadFailed;
|
|
24
29
|
onCantScanReported: OnCantScanReported;
|
|
30
|
+
onScanCompletedWithGuid: OnScanCompletedWithGuid;
|
|
25
31
|
};
|
|
26
32
|
export type PensaScanMetadata = {
|
|
27
33
|
guid: string | null;
|
|
@@ -52,6 +58,37 @@ export type PensaOnDemandProduct = {
|
|
|
52
58
|
export type PensaOnDemandReportBucket = {
|
|
53
59
|
productList: PensaOnDemandProduct[];
|
|
54
60
|
};
|
|
61
|
+
export type PensaOnDemandScan = {
|
|
62
|
+
facingsSeen: PensaOnDemandReportBucket | null;
|
|
63
|
+
fullFacings: PensaOnDemandReportBucket | null;
|
|
64
|
+
fullFacingsAndProductPositions: PensaOnDemandReportBucket | null;
|
|
65
|
+
itemsSeen: PensaOnDemandReportBucket | null;
|
|
66
|
+
newProducts: PensaOnDemandReportBucket | null;
|
|
67
|
+
newProductPackaging: PensaOnDemandReportBucket | null;
|
|
68
|
+
missingPriceTag: PensaOnDemandReportBucket | null;
|
|
69
|
+
noOos: PensaOnDemandReportBucket | null;
|
|
70
|
+
oos: PensaOnDemandReportBucket | null;
|
|
71
|
+
productPositions: PensaOnDemandReportBucket | null;
|
|
72
|
+
scanFailed: PensaOnDemandReportBucket | null;
|
|
73
|
+
scanRejected: PensaOnDemandReportBucket | null;
|
|
74
|
+
scanSkipped: PensaOnDemandReportBucket | null;
|
|
75
|
+
projectId: number | null;
|
|
76
|
+
projectName: string | null;
|
|
77
|
+
projectReportId: number | null;
|
|
78
|
+
projectReportName: string | null;
|
|
79
|
+
realogramSignedUrl: string | null;
|
|
80
|
+
scanId: number | null;
|
|
81
|
+
shelfId: number | null;
|
|
82
|
+
shelfName: string | null;
|
|
83
|
+
status: string | null;
|
|
84
|
+
};
|
|
85
|
+
export type PensaOnDemandVisit = {
|
|
86
|
+
endTime: string | null;
|
|
87
|
+
identifier: string | null;
|
|
88
|
+
startTime: string | null;
|
|
89
|
+
storeName: string | null;
|
|
90
|
+
storeTdlinx: string | null;
|
|
91
|
+
};
|
|
55
92
|
export type PensaOnDemandReport = {
|
|
56
93
|
facingsSeen: PensaOnDemandReportBucket | null;
|
|
57
94
|
fullFacings: PensaOnDemandReportBucket | null;
|
|
@@ -59,6 +96,7 @@ export type PensaOnDemandReport = {
|
|
|
59
96
|
itemsSeen: PensaOnDemandReportBucket | null;
|
|
60
97
|
newProducts: PensaOnDemandReportBucket | null;
|
|
61
98
|
newProductPackaging: PensaOnDemandReportBucket | null;
|
|
99
|
+
missingPriceTag: PensaOnDemandReportBucket | null;
|
|
62
100
|
noOos: PensaOnDemandReportBucket | null;
|
|
63
101
|
oos: PensaOnDemandReportBucket | null;
|
|
64
102
|
productPositions: PensaOnDemandReportBucket | null;
|
|
@@ -73,6 +111,20 @@ export type PensaOnDemandReport = {
|
|
|
73
111
|
shelfId: number | null;
|
|
74
112
|
shelfName: string | null;
|
|
75
113
|
status: string | null;
|
|
114
|
+
scans: PensaOnDemandScan[] | null;
|
|
115
|
+
visit: PensaOnDemandVisit | null;
|
|
116
|
+
};
|
|
117
|
+
export type PensaVisitScanItem = {
|
|
118
|
+
created: string | null;
|
|
119
|
+
fastStatus: string | null;
|
|
120
|
+
scanId: number | null;
|
|
121
|
+
status: string | null;
|
|
122
|
+
uploadCompleted: boolean | null;
|
|
123
|
+
};
|
|
124
|
+
export type PensaVisitScansStatus = {
|
|
125
|
+
guid: string | null;
|
|
126
|
+
scans: PensaVisitScanItem[] | null;
|
|
127
|
+
visitStatus: string | null;
|
|
76
128
|
};
|
|
77
129
|
export declare enum PensaReportType {
|
|
78
130
|
FACINGS_SEEN = "FACINGS_SEEN",
|
|
@@ -81,6 +133,7 @@ export declare enum PensaReportType {
|
|
|
81
133
|
ITEMS_SEEN = "ITEMS_SEEN",
|
|
82
134
|
NEW_PRODUCTS = "NEW_PRODUCTS",
|
|
83
135
|
NEW_PRODUCT_PACKAGING = "NEW_PRODUCT_PACKAGING",
|
|
136
|
+
MISSING_PRICE_TAG = "MISSING_PRICE_TAG",
|
|
84
137
|
NO_OOS = "NO_OOS",
|
|
85
138
|
OOS = "OOS",
|
|
86
139
|
PRODUCT_POSITIONS = "PRODUCT_POSITIONS",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,0BAA0B,GAAG;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,0BAA0B,EAAE,0BAA0B,CAAC;IACvD,qBAAqB,EAAE,qBAAqB,CAAC;IAC7C,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,kBAAkB,EAAE,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pensasystems/pensa-react-native",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "The Pensa Mobile App SDK is a developer toolkit designed to simplify adding Pensa’s capabilities to your mobile applications. It provides pre-built libraries, tools, and APIs to accelerate development and integration, offering streamlined SDK integration, easy initialization, and comprehensive functionality. With the Pensa SDK, you can enhance your app’s features or seamlessly integrate with other services for a cohesive user experience.",
|
|
5
5
|
"source": "./src/index.tsx",
|
|
6
6
|
"main": "./lib/module/index.js",
|
package/src/index.tsx
CHANGED
|
@@ -3,6 +3,7 @@ import type {
|
|
|
3
3
|
PensaOnDemandReport,
|
|
4
4
|
PensaScanStatus,
|
|
5
5
|
PensaShelfItem,
|
|
6
|
+
PensaVisitScansStatus,
|
|
6
7
|
} from './types';
|
|
7
8
|
import { PensaReportType } from './types';
|
|
8
9
|
|
|
@@ -79,27 +80,42 @@ export const showStoreChecklist = (
|
|
|
79
80
|
);
|
|
80
81
|
};
|
|
81
82
|
|
|
83
|
+
export const showStoreChecklistWithGuid = (
|
|
84
|
+
globalStoreId: string,
|
|
85
|
+
guid: string
|
|
86
|
+
): Promise<void> => {
|
|
87
|
+
return PensaSdkReactNative.showStoreChecklistWithGuid(globalStoreId, guid);
|
|
88
|
+
};
|
|
89
|
+
|
|
82
90
|
export const fetchScanStatuses = (
|
|
83
91
|
scanIds: number[]
|
|
84
92
|
): Promise<PensaScanStatus[]> => {
|
|
85
93
|
return PensaSdkReactNative.fetchScanStatuses(scanIds);
|
|
86
94
|
};
|
|
87
95
|
|
|
88
|
-
export
|
|
89
|
-
scanId
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
96
|
+
export function fetchOnDemandReports(params: {
|
|
97
|
+
scanId?: number | null;
|
|
98
|
+
guid?: string | null;
|
|
99
|
+
projectId?: number | null;
|
|
100
|
+
reportTypes?: PensaReportType[];
|
|
101
|
+
}): Promise<PensaOnDemandReport> {
|
|
93
102
|
const finalReportTypes =
|
|
94
|
-
reportTypes && reportTypes.length > 0
|
|
95
|
-
? reportTypes
|
|
103
|
+
params.reportTypes && params.reportTypes.length > 0
|
|
104
|
+
? params.reportTypes
|
|
96
105
|
: [PensaReportType.ITEMS_SEEN];
|
|
97
106
|
|
|
98
107
|
return PensaSdkReactNative.fetchOnDemandReports(
|
|
99
|
-
scanId,
|
|
100
|
-
|
|
108
|
+
params.scanId ?? null,
|
|
109
|
+
params.guid ?? null,
|
|
110
|
+
params.projectId ?? null,
|
|
101
111
|
finalReportTypes
|
|
102
112
|
);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
export const fetchVisitScansStatus = (
|
|
116
|
+
guid: string
|
|
117
|
+
): Promise<PensaVisitScansStatus> => {
|
|
118
|
+
return PensaSdkReactNative.fetchVisitScansStatus(guid);
|
|
103
119
|
};
|
|
104
120
|
|
|
105
121
|
export const fetchProductImageBase64 = (productId: number): Promise<string> => {
|
package/src/types.ts
CHANGED
|
@@ -21,11 +21,18 @@ export type OnCantScanReported = {
|
|
|
21
21
|
reason: string;
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
+
export type OnScanCompletedWithGuid = {
|
|
25
|
+
guid: string | null;
|
|
26
|
+
tdlinxId: string;
|
|
27
|
+
scanId: number;
|
|
28
|
+
};
|
|
29
|
+
|
|
24
30
|
export type PensaEventPayloads = {
|
|
25
31
|
onScanUploadProgressUpdate: OnScanUploadProgressUpdate;
|
|
26
32
|
onScanUploadCompleted: OnScanUploadCompleted;
|
|
27
33
|
onScanUploadFailed: OnScanUploadFailed;
|
|
28
34
|
onCantScanReported: OnCantScanReported;
|
|
35
|
+
onScanCompletedWithGuid: OnScanCompletedWithGuid;
|
|
29
36
|
};
|
|
30
37
|
|
|
31
38
|
export type PensaScanMetadata = {
|
|
@@ -61,6 +68,39 @@ export type PensaOnDemandReportBucket = {
|
|
|
61
68
|
productList: PensaOnDemandProduct[];
|
|
62
69
|
};
|
|
63
70
|
|
|
71
|
+
export type PensaOnDemandScan = {
|
|
72
|
+
facingsSeen: PensaOnDemandReportBucket | null;
|
|
73
|
+
fullFacings: PensaOnDemandReportBucket | null;
|
|
74
|
+
fullFacingsAndProductPositions: PensaOnDemandReportBucket | null;
|
|
75
|
+
itemsSeen: PensaOnDemandReportBucket | null;
|
|
76
|
+
newProducts: PensaOnDemandReportBucket | null;
|
|
77
|
+
newProductPackaging: PensaOnDemandReportBucket | null;
|
|
78
|
+
missingPriceTag: PensaOnDemandReportBucket | null;
|
|
79
|
+
noOos: PensaOnDemandReportBucket | null;
|
|
80
|
+
oos: PensaOnDemandReportBucket | null;
|
|
81
|
+
productPositions: PensaOnDemandReportBucket | null;
|
|
82
|
+
scanFailed: PensaOnDemandReportBucket | null;
|
|
83
|
+
scanRejected: PensaOnDemandReportBucket | null;
|
|
84
|
+
scanSkipped: PensaOnDemandReportBucket | null;
|
|
85
|
+
projectId: number | null;
|
|
86
|
+
projectName: string | null;
|
|
87
|
+
projectReportId: number | null;
|
|
88
|
+
projectReportName: string | null;
|
|
89
|
+
realogramSignedUrl: string | null;
|
|
90
|
+
scanId: number | null;
|
|
91
|
+
shelfId: number | null;
|
|
92
|
+
shelfName: string | null;
|
|
93
|
+
status: string | null;
|
|
94
|
+
};
|
|
95
|
+
|
|
96
|
+
export type PensaOnDemandVisit = {
|
|
97
|
+
endTime: string | null;
|
|
98
|
+
identifier: string | null;
|
|
99
|
+
startTime: string | null;
|
|
100
|
+
storeName: string | null;
|
|
101
|
+
storeTdlinx: string | null;
|
|
102
|
+
};
|
|
103
|
+
|
|
64
104
|
export type PensaOnDemandReport = {
|
|
65
105
|
facingsSeen: PensaOnDemandReportBucket | null;
|
|
66
106
|
fullFacings: PensaOnDemandReportBucket | null;
|
|
@@ -68,6 +108,7 @@ export type PensaOnDemandReport = {
|
|
|
68
108
|
itemsSeen: PensaOnDemandReportBucket | null;
|
|
69
109
|
newProducts: PensaOnDemandReportBucket | null;
|
|
70
110
|
newProductPackaging: PensaOnDemandReportBucket | null;
|
|
111
|
+
missingPriceTag: PensaOnDemandReportBucket | null;
|
|
71
112
|
noOos: PensaOnDemandReportBucket | null;
|
|
72
113
|
oos: PensaOnDemandReportBucket | null;
|
|
73
114
|
productPositions: PensaOnDemandReportBucket | null;
|
|
@@ -82,6 +123,22 @@ export type PensaOnDemandReport = {
|
|
|
82
123
|
shelfId: number | null;
|
|
83
124
|
shelfName: string | null;
|
|
84
125
|
status: string | null;
|
|
126
|
+
scans: PensaOnDemandScan[] | null;
|
|
127
|
+
visit: PensaOnDemandVisit | null;
|
|
128
|
+
};
|
|
129
|
+
|
|
130
|
+
export type PensaVisitScanItem = {
|
|
131
|
+
created: string | null;
|
|
132
|
+
fastStatus: string | null;
|
|
133
|
+
scanId: number | null;
|
|
134
|
+
status: string | null;
|
|
135
|
+
uploadCompleted: boolean | null;
|
|
136
|
+
};
|
|
137
|
+
|
|
138
|
+
export type PensaVisitScansStatus = {
|
|
139
|
+
guid: string | null;
|
|
140
|
+
scans: PensaVisitScanItem[] | null;
|
|
141
|
+
visitStatus: string | null;
|
|
85
142
|
};
|
|
86
143
|
|
|
87
144
|
export enum PensaReportType {
|
|
@@ -91,6 +148,7 @@ export enum PensaReportType {
|
|
|
91
148
|
ITEMS_SEEN = 'ITEMS_SEEN',
|
|
92
149
|
NEW_PRODUCTS = 'NEW_PRODUCTS',
|
|
93
150
|
NEW_PRODUCT_PACKAGING = 'NEW_PRODUCT_PACKAGING',
|
|
151
|
+
MISSING_PRICE_TAG = 'MISSING_PRICE_TAG',
|
|
94
152
|
NO_OOS = 'NO_OOS',
|
|
95
153
|
OOS = 'OOS',
|
|
96
154
|
PRODUCT_POSITIONS = 'PRODUCT_POSITIONS',
|