@pensasystems/pensa-react-native 0.1.0-beta-2 → 0.1.0-beta-4

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.
@@ -21,5 +21,5 @@ Pod::Spec.new do |s|
21
21
  s.dependency "React-Core"
22
22
  end
23
23
 
24
- s.dependency "PensaSdk", "~> 1.0.4"
24
+ s.dependency "PensaSdk", "~> 1.0.5"
25
25
  end
@@ -7,7 +7,15 @@ buildscript {
7
7
  google()
8
8
  mavenCentral()
9
9
  maven {
10
- url = uri("https://sdk.pensasystems.net/pensa-sdk-android")
10
+ //url = uri("https://sdk.pensasystems.net/pensa-sdk-android")
11
+ url = uri("https://pensasystems.jfrog.io/artifactory/pensa-dev-maven-sdk-android-virtual/")
12
+ credentials {
13
+ username = "ci-cd-service"
14
+ password = "GChhw(Ywq&-qu1@@"
15
+ }
16
+ authentication {
17
+ basic(BasicAuthentication)
18
+ }
11
19
  }
12
20
  }
13
21
 
@@ -75,7 +83,15 @@ repositories {
75
83
  mavenCentral()
76
84
  google()
77
85
  maven {
78
- url = uri("https://sdk.pensasystems.net/pensa-sdk-android")
86
+ //url = uri("https://sdk.pensasystems.net/pensa-sdk-android")
87
+ url = uri("https://pensasystems.jfrog.io/artifactory/pensa-dev-maven-sdk-android-virtual/")
88
+ credentials {
89
+ username = "ci-cd-service"
90
+ password = "GChhw(Ywq&-qu1@@"
91
+ }
92
+ authentication {
93
+ basic(BasicAuthentication)
94
+ }
79
95
  }
80
96
  }
81
97
 
@@ -83,7 +99,7 @@ def kotlin_version = getExtOrDefault("kotlinVersion")
83
99
 
84
100
  dependencies {
85
101
  coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:2.1.5'
86
- implementation "com.pensasystems:pensasdk:1.0.8"
102
+ implementation "com.pensasystems:pensasdk:1.0.13"
87
103
  implementation "com.facebook.react:react-android"
88
104
  implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
89
105
  }
@@ -1,9 +1,11 @@
1
1
  package com.pensasdkreactnative
2
2
 
3
+ import com.facebook.react.bridge.Arguments
3
4
  import com.facebook.react.bridge.ReactApplicationContext
4
5
  import com.facebook.react.bridge.ReactContextBaseJavaModule
5
6
  import com.facebook.react.bridge.ReactMethod
6
7
  import com.facebook.react.bridge.Promise
8
+ import com.facebook.react.bridge.ReadableArray
7
9
  import com.facebook.react.bridge.ReadableMap
8
10
  import com.pensasystems.pensasdk.PensaSdk
9
11
  import com.pensasystems.pensasdk.PensaSdkConfiguration
@@ -169,4 +171,119 @@ class PensaSdkReactNativeModule(reactContext: ReactApplicationContext) :
169
171
  promise.reject("NO_ACTIVITY", "Current activity is null")
170
172
  }
171
173
  }
174
+
175
+ @ReactMethod
176
+ fun fetchScanStatuses(scanIds: ReadableArray, promise: Promise) {
177
+ try {
178
+ val ids = mutableListOf<Int>()
179
+ for (i in 0 until scanIds.size()) {
180
+ ids.add(scanIds.getInt(i))
181
+ }
182
+
183
+ PensaSdk.fetchScanStatuses(
184
+ scanIds = ids,
185
+ onSuccess = { statuses ->
186
+ val rnList = statuses.map { status ->
187
+ val map = Arguments.createMap()
188
+ map.putInt("id", status.id)
189
+ map.putString("created", status.created)
190
+ map.putString("fastStatus", status.fastStatus)
191
+ map.putString("scanTimestamp", status.scanTimestamp)
192
+ map.putString("scannerId", status.scannerId)
193
+ map.putString("status", status.status)
194
+
195
+ val metadata = Arguments.createMap()
196
+ metadata.putString("guid", status.metadata?.guid)
197
+ metadata.putString("serverUploadStarted", status.metadata?.serverUploadStarted)
198
+ map.putMap("metadata", metadata)
199
+
200
+ map
201
+ }
202
+
203
+ val result = Arguments.createArray()
204
+ rnList.forEach { result.pushMap(it) }
205
+ promise.resolve(result)
206
+
207
+ },
208
+ onError = { error ->
209
+ promise.reject("FETCH_SCAN_STATUSES_FAILED", error)
210
+ }
211
+ )
212
+ } catch (e: Exception) {
213
+ promise.reject("FETCH_SCAN_STATUSES_EXCEPTION", e)
214
+ }
215
+ }
216
+
217
+ @ReactMethod
218
+ fun fetchOnDemandReports(scanId: Int, projectId: Int?, promise: Promise) {
219
+ try {
220
+ PensaSdk.fetchOnDemandReports(
221
+ scanId = scanId,
222
+ projectId = projectId,
223
+ onSuccess = { report ->
224
+ val result = Arguments.createMap()
225
+
226
+ report.facingsSeen?.let { bucket ->
227
+ val productsArray = Arguments.createArray()
228
+ bucket.productList.forEach { product ->
229
+ val p = Arguments.createMap()
230
+ p.putString("brand", product.brand)
231
+ p.putInt("brandId", product.brandId ?: 0)
232
+ p.putString("category", product.category)
233
+ p.putInt("categoryId", product.categoryId ?: 0)
234
+ p.putInt("facings", product.facings ?: 0)
235
+ p.putString("manufacturer", product.manufacturer)
236
+ p.putInt("manufacturerId", product.manufacturerId ?: 0)
237
+ p.putString("product", product.product)
238
+ p.putInt("productId", product.productId ?: 0)
239
+ p.putString("upc", product.upc)
240
+ productsArray.pushMap(p)
241
+ }
242
+
243
+ val bucketMap = Arguments.createMap()
244
+ bucketMap.putArray("productList", productsArray)
245
+ result.putMap("facingsSeen", bucketMap)
246
+
247
+ } ?: result.putNull("facingsSeen")
248
+
249
+ result.putInt("projectId", report.projectId ?: 0)
250
+ result.putString("projectName", report.projectName)
251
+ result.putInt("projectReportId", report.projectReportId ?: 0)
252
+ result.putString("projectReportName", report.projectReportName)
253
+ result.putInt("shelfId", report.shelfId ?: 0)
254
+ result.putString("shelfName", report.shelfName)
255
+
256
+ promise.resolve(result)
257
+ },
258
+ onError = { error ->
259
+ promise.reject("FETCH_ON_DEMAND_REPORTS_FAILED", error)
260
+ }
261
+ )
262
+ } catch (e: Exception) {
263
+ promise.reject("ON_DEMAND_EXCEPTION", e)
264
+ }
265
+ }
266
+
267
+ @ReactMethod
268
+ fun fetchProductImageBase64(productId: Int, promise: Promise) {
269
+ try {
270
+ val activity = reactApplicationContext.currentActivity
271
+ if (activity != null) {
272
+ PensaSdk.fetchProductImageBase64(
273
+ context = activity,
274
+ productId = productId,
275
+ onSuccess = { base64 ->
276
+ promise.resolve(base64)
277
+ },
278
+ onError = { error ->
279
+ promise.reject("FETCH_PRODUCT_IMAGE_FAILED", error)
280
+ }
281
+ )
282
+ } else {
283
+ promise.reject("NO_ACTIVITY", "Current activity is null")
284
+ }
285
+ } catch (e: Exception) {
286
+ promise.reject("FETCH_PRODUCT_IMAGE_EXCEPTION", e)
287
+ }
288
+ }
172
289
  }
@@ -37,6 +37,19 @@ RCT_EXTERN_METHOD(showStoreChecklist:(NSString *)globalStoreId
37
37
  withResolver:(RCTPromiseResolveBlock)resolve
38
38
  withRejecter:(RCTPromiseRejectBlock)reject)
39
39
 
40
+ RCT_EXTERN_METHOD(fetchScanStatuses:(NSArray *)scanIds
41
+ withResolver:(RCTPromiseResolveBlock)resolve
42
+ withRejecter:(RCTPromiseRejectBlock)reject)
43
+
44
+ RCT_EXTERN_METHOD(fetchOnDemandReports:(nonnull NSNumber *)scanId
45
+ projectId:(nullable NSNumber *)projectId
46
+ withResolver:(RCTPromiseResolveBlock)resolve
47
+ withRejecter:(RCTPromiseRejectBlock)reject)
48
+
49
+ RCT_EXTERN_METHOD(fetchProductImageBase64:(nonnull NSNumber *)productId
50
+ withResolver:(RCTPromiseResolveBlock)resolve
51
+ withRejecter:(RCTPromiseRejectBlock)reject)
52
+
40
53
  + (BOOL)requiresMainQueueSetup
41
54
  {
42
55
  return NO;
@@ -118,4 +118,115 @@ class PensaSdkReactNative: NSObject {
118
118
  resolve(nil)
119
119
  }
120
120
  }
121
+
122
+ @objc(fetchScanStatuses:withResolver:withRejecter:)
123
+ func fetchScanStatuses(
124
+ scanIds: [NSNumber],
125
+ resolve: @escaping RCTPromiseResolveBlock,
126
+ reject: @escaping RCTPromiseRejectBlock
127
+ ) {
128
+ let ids = scanIds.map { $0.intValue }
129
+
130
+ Pensa.shared.fetchScanStatuses(
131
+ scanIds: ids,
132
+ onSuccess: { statuses in
133
+ let mapped: [[String: Any]] = statuses.map { status in
134
+ var dict: [String: Any] = [:]
135
+
136
+ dict["id"] = status.id
137
+ dict["created"] = status.created ?? NSNull()
138
+ dict["fastStatus"] = status.fastStatus ?? NSNull()
139
+ dict["scanTimestamp"] = status.scanTimestamp ?? NSNull()
140
+ dict["scannerId"] = status.scannerId ?? NSNull()
141
+ dict["status"] = status.status ?? NSNull()
142
+
143
+ // metadata
144
+ if let metadata = status.metadata {
145
+ dict["metadata"] = [
146
+ "guid": metadata.guid ?? NSNull(),
147
+ "serverUploadStarted": metadata.serverUploadStarted ?? NSNull()
148
+ ]
149
+ } else {
150
+ dict["metadata"] = NSNull()
151
+ }
152
+
153
+ return dict
154
+ }
155
+
156
+ resolve(mapped)
157
+ },
158
+ onError: { error in
159
+ reject("FETCH_SCAN_STATUSES_FAILED", error.localizedDescription, error)
160
+ }
161
+ )
162
+ }
163
+
164
+ @objc(fetchOnDemandReports:projectId:withResolver:withRejecter:)
165
+ func fetchOnDemandReports(
166
+ scanId: NSNumber,
167
+ projectId: NSNumber?,
168
+ resolve: @escaping RCTPromiseResolveBlock,
169
+ reject: @escaping RCTPromiseRejectBlock
170
+ ) {
171
+
172
+ Pensa.shared.fetchOnDemandReports(
173
+ scanId: scanId.intValue,
174
+ projectId: projectId?.intValue,
175
+ onSuccess: { report in
176
+ var result: [String: Any] = [:]
177
+
178
+ // facingsSeen bucket
179
+ if let bucket = report.facingsSeen {
180
+ let products = bucket.productList.map { product -> [String: Any] in
181
+ return [
182
+ "brand": product.brand ?? NSNull(),
183
+ "brandId": product.brandId as Any,
184
+ "category": product.category ?? NSNull(),
185
+ "categoryId": product.categoryId as Any,
186
+ "facings": product.facings as Any,
187
+ "manufacturer": product.manufacturer ?? NSNull(),
188
+ "manufacturerId": product.manufacturerId as Any,
189
+ "product": product.product ?? NSNull(),
190
+ "productId": product.productId as Any,
191
+ "upc": product.upc ?? NSNull()
192
+ ]
193
+ }
194
+
195
+ result["facingsSeen"] = [
196
+ "productList": products
197
+ ]
198
+ } else {
199
+ result["facingsSeen"] = NSNull()
200
+ }
201
+
202
+ // Scalar fields
203
+ result["projectId"] = report.projectId as Any
204
+ result["projectName"] = report.projectName ?? NSNull()
205
+ result["projectReportId"] = report.projectReportId as Any
206
+ result["projectReportName"] = report.projectReportName ?? NSNull()
207
+ result["shelfId"] = report.shelfId as Any
208
+ result["shelfName"] = report.shelfName ?? NSNull()
209
+
210
+ resolve(result)
211
+ },
212
+ onError: { error in
213
+ reject("FETCH_ON_DEMAND_REPORTS_FAILED", error.localizedDescription, error)
214
+ }
215
+ )
216
+ }
217
+
218
+ @objc(fetchProductImageBase64:withResolver:withRejecter:)
219
+ func fetchProductImageBase64(productId: NSNumber,
220
+ resolve: @escaping RCTPromiseResolveBlock,
221
+ reject: @escaping RCTPromiseRejectBlock) {
222
+ Pensa.shared.fetchProductImageBase64(
223
+ productId: productId.intValue,
224
+ onSuccess: { base64 in
225
+ resolve(base64)
226
+ },
227
+ onError: { error in
228
+ reject("FETCH_PRODUCT_IMAGE_BASE64_FAILED", error.localizedDescription, error)
229
+ }
230
+ )
231
+ }
121
232
  }
@@ -37,6 +37,15 @@ export const showStockingScreen = () => {
37
37
  export const showStoreChecklist = (globalStoreId, guid, sectionKey) => {
38
38
  return PensaSdkReactNative.showStoreChecklist(globalStoreId, guid, sectionKey);
39
39
  };
40
+ export const fetchScanStatuses = scanIds => {
41
+ return PensaSdkReactNative.fetchScanStatuses(scanIds);
42
+ };
43
+ export const fetchOnDemandReports = (scanId, projectId) => {
44
+ return PensaSdkReactNative.fetchOnDemandReports(scanId, projectId ?? null);
45
+ };
46
+ export const fetchProductImageBase64 = productId => {
47
+ return PensaSdkReactNative.fetchProductImageBase64(productId);
48
+ };
40
49
  export * from "./events.js";
41
50
  export * from "./types.js";
42
51
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","LINKING_ERROR","select","ios","default","PensaSdkReactNative","Proxy","get","Error","initPensa","config","isPensaStarted","showShelfScans","showProductScans","showStoreSearchView","showStoresScreen","showScanArea","scanId","storeId","globalStoreId","showStockingScreen","showStoreChecklist","guid","sectionKey"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAEtD,MAAMC,aAAa,GACjB,iFAAiF,GACjFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,mBAAmB,GAAGN,aAAa,CAACM,mBAAmB,GACzDN,aAAa,CAACM,mBAAmB,GACjC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,MAAMQ,SAAS,GAAIC,MAIzB,IAAoB;EACnB,OAAOL,mBAAmB,CAACI,SAAS,CAACC,MAAM,CAAC;AAC9C,CAAC;AAED,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAwB;EACpD,OAAON,mBAAmB,CAACM,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAqB;EACjD,OAAOP,mBAAmB,CAACO,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAqB;EACnD,OAAOR,mBAAmB,CAACQ,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAqB;EACtD,OAAOT,mBAAmB,CAACS,mBAAmB,CAAC,CAAC;AAClD,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAqB;EACnD,OAAOV,mBAAmB,CAACU,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,MAAc,EACdC,OAAgB,EAChBC,aAAsB,KACJ;EAClB,OAAOd,mBAAmB,CAACW,YAAY,CACrCC,MAAM,EACNC,OAAO,IAAI,IAAI,EACfC,aAAa,IAAI,IACnB,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,kBAAkB,GAAGA,CAAA,KAAqB;EACrD,OAAOf,mBAAmB,CAACe,kBAAkB,CAAC,CAAC;AACjD,CAAC;AAED,OAAO,MAAMC,kBAAkB,GAAGA,CAChCF,aAAqB,EACrBG,IAAa,EACbC,UAAmB,KACD;EAClB,OAAOlB,mBAAmB,CAACgB,kBAAkB,CAC3CF,aAAa,EACbG,IAAI,EACJC,UACF,CAAC;AACH,CAAC;AAED,cAAc,aAAU;AACxB,cAAc,YAAS","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","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","projectId","fetchProductImageBase64","productId"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,SAASA,aAAa,EAAEC,QAAQ,QAAQ,cAAc;AAGtD,MAAMC,aAAa,GACjB,iFAAiF,GACjFD,QAAQ,CAACE,MAAM,CAAC;EAAEC,GAAG,EAAE,gCAAgC;EAAEC,OAAO,EAAE;AAAG,CAAC,CAAC,GACvE,sDAAsD,GACtD,+BAA+B;AAEjC,MAAMC,mBAAmB,GAAGN,aAAa,CAACM,mBAAmB,GACzDN,aAAa,CAACM,mBAAmB,GACjC,IAAIC,KAAK,CACP,CAAC,CAAC,EACF;EACEC,GAAGA,CAAA,EAAG;IACJ,MAAM,IAAIC,KAAK,CAACP,aAAa,CAAC;EAChC;AACF,CACF,CAAC;AAEL,OAAO,MAAMQ,SAAS,GAAIC,MAIzB,IAAoB;EACnB,OAAOL,mBAAmB,CAACI,SAAS,CAACC,MAAM,CAAC;AAC9C,CAAC;AAED,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAwB;EACpD,OAAON,mBAAmB,CAACM,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMC,cAAc,GAAGA,CAAA,KAAqB;EACjD,OAAOP,mBAAmB,CAACO,cAAc,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAqB;EACnD,OAAOR,mBAAmB,CAACQ,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,OAAO,MAAMC,mBAAmB,GAAGA,CAAA,KAAqB;EACtD,OAAOT,mBAAmB,CAACS,mBAAmB,CAAC,CAAC;AAClD,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAGA,CAAA,KAAqB;EACnD,OAAOV,mBAAmB,CAACU,gBAAgB,CAAC,CAAC;AAC/C,CAAC;AAED,OAAO,MAAMC,YAAY,GAAGA,CAC1BC,MAAc,EACdC,OAAgB,EAChBC,aAAsB,KACJ;EAClB,OAAOd,mBAAmB,CAACW,YAAY,CACrCC,MAAM,EACNC,OAAO,IAAI,IAAI,EACfC,aAAa,IAAI,IACnB,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,kBAAkB,GAAGA,CAAA,KAAqB;EACrD,OAAOf,mBAAmB,CAACe,kBAAkB,CAAC,CAAC;AACjD,CAAC;AAED,OAAO,MAAMC,kBAAkB,GAAGA,CAChCF,aAAqB,EACrBG,IAAa,EACbC,UAAmB,KACD;EAClB,OAAOlB,mBAAmB,CAACgB,kBAAkB,CAC3CF,aAAa,EACbG,IAAI,EACJC,UACF,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,iBAAiB,GAC5BC,OAAiB,IACc;EAC/B,OAAOpB,mBAAmB,CAACmB,iBAAiB,CAACC,OAAO,CAAC;AACvD,CAAC;AAED,OAAO,MAAMC,oBAAoB,GAAGA,CAClCT,MAAc,EACdU,SAAkB,KACe;EACjC,OAAOtB,mBAAmB,CAACqB,oBAAoB,CAC7CT,MAAM,EACNU,SAAS,IAAI,IACf,CAAC;AACH,CAAC;AAED,OAAO,MAAMC,uBAAuB,GAClCC,SAAiB,IACG;EACpB,OAAOxB,mBAAmB,CAACuB,uBAAuB,CAACC,SAAS,CAAC;AAC/D,CAAC;AAED,cAAc,aAAU;AACxB,cAAc,YAAS","ignoreList":[]}
@@ -1,3 +1,4 @@
1
+ import type { PensaOnDemandReport, PensaScanStatus } from './types';
1
2
  export declare const initPensa: (config: {
2
3
  clientId: string;
3
4
  clientSecret: string;
@@ -11,6 +12,9 @@ export declare const showStoresScreen: () => Promise<void>;
11
12
  export declare const showScanArea: (scanId: number, storeId?: number, globalStoreId?: string) => Promise<void>;
12
13
  export declare const showStockingScreen: () => Promise<void>;
13
14
  export declare const showStoreChecklist: (globalStoreId: string, guid?: string, sectionKey?: string) => Promise<void>;
15
+ export declare const fetchScanStatuses: (scanIds: number[]) => Promise<PensaScanStatus[]>;
16
+ export declare const fetchOnDemandReports: (scanId: number, projectId?: number) => Promise<PensaOnDemandReport>;
17
+ export declare const fetchProductImageBase64: (productId: number) => Promise<string>;
14
18
  export * from './events';
15
19
  export * from './types';
16
20
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAmBA,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,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAmBpE,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,iBAAiB,GAC5B,SAAS,MAAM,EAAE,KAChB,OAAO,CAAC,eAAe,EAAE,CAE3B,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,QAAQ,MAAM,EACd,YAAY,MAAM,KACjB,OAAO,CAAC,mBAAmB,CAK7B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,WAAW,MAAM,KAChB,OAAO,CAAC,MAAM,CAEhB,CAAC;AAEF,cAAc,UAAU,CAAC;AACzB,cAAc,SAAS,CAAC"}
@@ -23,4 +23,41 @@ export type PensaEventPayloads = {
23
23
  onScanUploadFailed: OnScanUploadFailed;
24
24
  onCantScanReported: OnCantScanReported;
25
25
  };
26
+ export type PensaScanMetadata = {
27
+ guid: string | null;
28
+ serverUploadStarted: string | null;
29
+ };
30
+ export type PensaScanStatus = {
31
+ created: string | null;
32
+ fastStatus: string | null;
33
+ id: number;
34
+ metadata: PensaScanMetadata | null;
35
+ scanTimestamp: string | null;
36
+ scannerId: string | null;
37
+ status: string | null;
38
+ };
39
+ export type PensaOnDemandProduct = {
40
+ brand: string | null;
41
+ brandId: number | null;
42
+ category: string | null;
43
+ categoryId: number | null;
44
+ facings: number | null;
45
+ manufacturer: string | null;
46
+ manufacturerId: number | null;
47
+ product: string | null;
48
+ productId: number | null;
49
+ upc: string | null;
50
+ };
51
+ export type PensaOnDemandReportBucket = {
52
+ productList: PensaOnDemandProduct[];
53
+ };
54
+ export type PensaOnDemandReport = {
55
+ facingsSeen: PensaOnDemandReportBucket | null;
56
+ projectId: number | null;
57
+ projectName: string | null;
58
+ projectReportId: number | null;
59
+ projectReportName: string | null;
60
+ shelfId: number | null;
61
+ shelfName: string | null;
62
+ };
26
63
  //# sourceMappingURL=types.d.ts.map
@@ -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;CACxC,CAAC"}
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;CACxC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG;IACtC,WAAW,EAAE,oBAAoB,EAAE,CAAC;CACrC,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,WAAW,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAC9C,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pensasystems/pensa-react-native",
3
- "version": "0.1.0-beta-2",
3
+ "version": "0.1.0-beta-4",
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
@@ -1,4 +1,5 @@
1
1
  import { NativeModules, Platform } from 'react-native';
2
+ import type { PensaOnDemandReport, PensaScanStatus } from './types';
2
3
 
3
4
  const LINKING_ERROR =
4
5
  `The package 'pensa-sdk-react-native' doesn't seem to be linked. Make sure: \n\n` +
@@ -73,5 +74,27 @@ export const showStoreChecklist = (
73
74
  );
74
75
  };
75
76
 
77
+ export const fetchScanStatuses = (
78
+ scanIds: number[]
79
+ ): Promise<PensaScanStatus[]> => {
80
+ return PensaSdkReactNative.fetchScanStatuses(scanIds);
81
+ };
82
+
83
+ export const fetchOnDemandReports = (
84
+ scanId: number,
85
+ projectId?: number
86
+ ): Promise<PensaOnDemandReport> => {
87
+ return PensaSdkReactNative.fetchOnDemandReports(
88
+ scanId,
89
+ projectId ?? null
90
+ );
91
+ };
92
+
93
+ export const fetchProductImageBase64 = (
94
+ productId: number
95
+ ): Promise<string> => {
96
+ return PensaSdkReactNative.fetchProductImageBase64(productId);
97
+ };
98
+
76
99
  export * from './events';
77
100
  export * from './types';
package/src/types.ts CHANGED
@@ -27,3 +27,45 @@ export type PensaEventPayloads = {
27
27
  onScanUploadFailed: OnScanUploadFailed;
28
28
  onCantScanReported: OnCantScanReported;
29
29
  };
30
+
31
+ export type PensaScanMetadata = {
32
+ guid: string | null;
33
+ serverUploadStarted: string | null;
34
+ };
35
+
36
+ export type PensaScanStatus = {
37
+ created: string | null;
38
+ fastStatus: string | null;
39
+ id: number;
40
+ metadata: PensaScanMetadata | null;
41
+ scanTimestamp: string | null;
42
+ scannerId: string | null;
43
+ status: string | null;
44
+ };
45
+
46
+ export type PensaOnDemandProduct = {
47
+ brand: string | null;
48
+ brandId: number | null;
49
+ category: string | null;
50
+ categoryId: number | null;
51
+ facings: number | null;
52
+ manufacturer: string | null;
53
+ manufacturerId: number | null;
54
+ product: string | null;
55
+ productId: number | null;
56
+ upc: string | null;
57
+ };
58
+
59
+ export type PensaOnDemandReportBucket = {
60
+ productList: PensaOnDemandProduct[];
61
+ };
62
+
63
+ export type PensaOnDemandReport = {
64
+ facingsSeen: PensaOnDemandReportBucket | null;
65
+ projectId: number | null;
66
+ projectName: string | null;
67
+ projectReportId: number | null;
68
+ projectReportName: string | null;
69
+ shelfId: number | null;
70
+ shelfName: string | null;
71
+ };