@pensasystems/pensa-react-native 0.1.0-beta-2 → 0.1.0-beta-3
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/ios/PensaSdkReactNative.mm +13 -0
- package/ios/PensaSdkReactNative.swift +92 -0
- package/lib/module/index.js +9 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +35 -0
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/index.tsx +23 -0
- package/src/types.ts +39 -0
|
@@ -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,96 @@ class PensaSdkReactNative: NSObject {
|
|
|
118
118
|
resolve(nil)
|
|
119
119
|
}
|
|
120
120
|
}
|
|
121
|
+
|
|
122
|
+
@objc(fetchScanStatuses:withResolver:withRejecter:)
|
|
123
|
+
func fetchScanStatuses(scanIds: [NSNumber],
|
|
124
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
125
|
+
reject: @escaping RCTPromiseRejectBlock) {
|
|
126
|
+
let ids = scanIds.map { $0.intValue }
|
|
127
|
+
|
|
128
|
+
Pensa.shared.fetchScanStatuses(
|
|
129
|
+
scanIds: ids,
|
|
130
|
+
onSuccess: { statuses in
|
|
131
|
+
let mapped: [[String: Any]] = statuses.map { status in
|
|
132
|
+
var dict: [String: Any] = [:]
|
|
133
|
+
dict["captureType"] = status.captureType ?? NSNull()
|
|
134
|
+
dict["created"] = status.created ?? NSNull()
|
|
135
|
+
dict["fastStatus"] = status.fastStatus ?? NSNull()
|
|
136
|
+
dict["frameHeight"] = status.frameHeight as Any
|
|
137
|
+
dict["frameWidth"] = status.frameWidth as Any
|
|
138
|
+
dict["hasOutOfServiceSegment"] = status.hasOutOfServiceSegment as Any
|
|
139
|
+
dict["id"] = status.id
|
|
140
|
+
dict["imageCaptureQuality"] = status.imageCaptureQuality ?? NSNull()
|
|
141
|
+
dict["publish"] = status.publish as Any
|
|
142
|
+
dict["scanAreaId"] = status.scanAreaId as Any
|
|
143
|
+
dict["scanMetadataGuid"] = status.scanMetadataGuid ?? NSNull()
|
|
144
|
+
dict["scanMetadataServerUploadStarted"] = status.scanMetadataServerUploadStarted ?? NSNull()
|
|
145
|
+
dict["scanTimestamp"] = status.scanTimestamp ?? NSNull()
|
|
146
|
+
dict["scannerId"] = status.scannerId as Any
|
|
147
|
+
dict["shelfScanPeriodId"] = status.shelfScanPeriodId as Any
|
|
148
|
+
dict["status"] = status.status ?? NSNull()
|
|
149
|
+
return dict
|
|
150
|
+
}
|
|
151
|
+
resolve(mapped)
|
|
152
|
+
},
|
|
153
|
+
onError: { error in
|
|
154
|
+
reject("FETCH_SCAN_STATUSES_FAILED", error.localizedDescription, error)
|
|
155
|
+
}
|
|
156
|
+
)
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
@objc(fetchOnDemandReports:projectId:withResolver:withRejecter:)
|
|
160
|
+
func fetchOnDemandReports(scanId: NSNumber,
|
|
161
|
+
projectId: NSNumber?,
|
|
162
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
163
|
+
reject: @escaping RCTPromiseRejectBlock) {
|
|
164
|
+
Pensa.shared.fetchOnDemandReports(
|
|
165
|
+
scanId: scanId.intValue,
|
|
166
|
+
projectId: projectId?.intValue,
|
|
167
|
+
onSuccess: { report in
|
|
168
|
+
var result: [String: Any] = [:]
|
|
169
|
+
|
|
170
|
+
print("report: \(report) result: \(result)")
|
|
171
|
+
|
|
172
|
+
if let bucket = report.itemsSeen {
|
|
173
|
+
let products: [[String: Any]] = bucket.productList.map { product in
|
|
174
|
+
var dict: [String: Any] = [:]
|
|
175
|
+
dict["brand"] = product.brand ?? NSNull()
|
|
176
|
+
dict["brandId"] = product.brandId as Any
|
|
177
|
+
dict["category"] = product.category ?? NSNull()
|
|
178
|
+
dict["categoryId"] = product.categoryId as Any
|
|
179
|
+
dict["manufacturer"] = product.manufacturer ?? NSNull()
|
|
180
|
+
dict["manufacturerId"] = product.manufacturerId as Any
|
|
181
|
+
dict["product"] = product.product ?? NSNull()
|
|
182
|
+
dict["productId"] = product.productId as Any
|
|
183
|
+
dict["upc"] = product.upc ?? NSNull()
|
|
184
|
+
return dict
|
|
185
|
+
}
|
|
186
|
+
result["itemsSeen"] = ["productList": products]
|
|
187
|
+
} else {
|
|
188
|
+
result["itemsSeen"] = NSNull()
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
resolve(result)
|
|
192
|
+
},
|
|
193
|
+
onError: { error in
|
|
194
|
+
reject("FETCH_ON_DEMAND_REPORTS_FAILED", error.localizedDescription, error)
|
|
195
|
+
}
|
|
196
|
+
)
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
@objc(fetchProductImageBase64:withResolver:withRejecter:)
|
|
200
|
+
func fetchProductImageBase64(productId: NSNumber,
|
|
201
|
+
resolve: @escaping RCTPromiseResolveBlock,
|
|
202
|
+
reject: @escaping RCTPromiseRejectBlock) {
|
|
203
|
+
Pensa.shared.fetchProductImageBase64(
|
|
204
|
+
productId: productId.intValue,
|
|
205
|
+
onSuccess: { base64 in
|
|
206
|
+
resolve(base64)
|
|
207
|
+
},
|
|
208
|
+
onError: { error in
|
|
209
|
+
reject("FETCH_PRODUCT_IMAGE_BASE64_FAILED", error.localizedDescription, error)
|
|
210
|
+
}
|
|
211
|
+
)
|
|
212
|
+
}
|
|
121
213
|
}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
package/lib/module/index.js.map
CHANGED
|
@@ -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;
|
|
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":"
|
|
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,39 @@ export type PensaEventPayloads = {
|
|
|
23
23
|
onScanUploadFailed: OnScanUploadFailed;
|
|
24
24
|
onCantScanReported: OnCantScanReported;
|
|
25
25
|
};
|
|
26
|
+
export type PensaScanStatus = {
|
|
27
|
+
captureType: string | null;
|
|
28
|
+
created: string | null;
|
|
29
|
+
fastStatus: string | null;
|
|
30
|
+
frameHeight: number | null;
|
|
31
|
+
frameWidth: number | null;
|
|
32
|
+
hasOutOfServiceSegment: boolean | null;
|
|
33
|
+
id: number;
|
|
34
|
+
imageCaptureQuality: string | null;
|
|
35
|
+
publish: boolean | null;
|
|
36
|
+
scanAreaId: number | null;
|
|
37
|
+
scanMetadataGuid: string | null;
|
|
38
|
+
scanMetadataServerUploadStarted: string | null;
|
|
39
|
+
scanTimestamp: string | null;
|
|
40
|
+
scannerId: number | null;
|
|
41
|
+
shelfScanPeriodId: number | null;
|
|
42
|
+
status: string | null;
|
|
43
|
+
};
|
|
44
|
+
export type PensaOnDemandProduct = {
|
|
45
|
+
brand: string | null;
|
|
46
|
+
brandId: number | null;
|
|
47
|
+
category: string | null;
|
|
48
|
+
categoryId: number | null;
|
|
49
|
+
manufacturer: string | null;
|
|
50
|
+
manufacturerId: number | null;
|
|
51
|
+
product: string | null;
|
|
52
|
+
productId: number | null;
|
|
53
|
+
upc: string | null;
|
|
54
|
+
};
|
|
55
|
+
export type PensaOnDemandReportBucket = {
|
|
56
|
+
productList: PensaOnDemandProduct[];
|
|
57
|
+
};
|
|
58
|
+
export type PensaOnDemandReport = {
|
|
59
|
+
itemsSeen: PensaOnDemandReportBucket | null;
|
|
60
|
+
};
|
|
26
61
|
//# 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,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,sBAAsB,EAAE,OAAO,GAAG,IAAI,CAAC;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,+BAA+B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,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,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,SAAS,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAC7C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@pensasystems/pensa-react-native",
|
|
3
|
-
"version": "0.1.0-beta-
|
|
3
|
+
"version": "0.1.0-beta-3",
|
|
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,42 @@ export type PensaEventPayloads = {
|
|
|
27
27
|
onScanUploadFailed: OnScanUploadFailed;
|
|
28
28
|
onCantScanReported: OnCantScanReported;
|
|
29
29
|
};
|
|
30
|
+
|
|
31
|
+
export type PensaScanStatus = {
|
|
32
|
+
captureType: string | null;
|
|
33
|
+
created: string | null;
|
|
34
|
+
fastStatus: string | null;
|
|
35
|
+
frameHeight: number | null;
|
|
36
|
+
frameWidth: number | null;
|
|
37
|
+
hasOutOfServiceSegment: boolean | null;
|
|
38
|
+
id: number;
|
|
39
|
+
imageCaptureQuality: string | null;
|
|
40
|
+
publish: boolean | null;
|
|
41
|
+
scanAreaId: number | null;
|
|
42
|
+
scanMetadataGuid: string | null;
|
|
43
|
+
scanMetadataServerUploadStarted: string | null;
|
|
44
|
+
scanTimestamp: string | null;
|
|
45
|
+
scannerId: number | null;
|
|
46
|
+
shelfScanPeriodId: number | null;
|
|
47
|
+
status: string | null;
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
export type PensaOnDemandProduct = {
|
|
51
|
+
brand: string | null;
|
|
52
|
+
brandId: number | null;
|
|
53
|
+
category: string | null;
|
|
54
|
+
categoryId: number | null;
|
|
55
|
+
manufacturer: string | null;
|
|
56
|
+
manufacturerId: number | null;
|
|
57
|
+
product: string | null;
|
|
58
|
+
productId: number | null;
|
|
59
|
+
upc: string | null;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
export type PensaOnDemandReportBucket = {
|
|
63
|
+
productList: PensaOnDemandProduct[];
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export type PensaOnDemandReport = {
|
|
67
|
+
itemsSeen: PensaOnDemandReportBucket | null;
|
|
68
|
+
};
|