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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (35) hide show
  1. package/LICENSE +20 -0
  2. package/PensaSdkReactNative.podspec +25 -0
  3. package/README.md +373 -0
  4. package/android/build.gradle +90 -0
  5. package/android/gradle.properties +5 -0
  6. package/android/src/main/AndroidManifest.xml +3 -0
  7. package/android/src/main/AndroidManifestNew.xml +2 -0
  8. package/android/src/main/java/com/pensasdkreactnative/PensaEventEmitterModule.kt +21 -0
  9. package/android/src/main/java/com/pensasdkreactnative/PensaListeners.kt +44 -0
  10. package/android/src/main/java/com/pensasdkreactnative/PensaSdkReactNativeModule.kt +172 -0
  11. package/android/src/main/java/com/pensasdkreactnative/PensaSdkReactNativePackage.kt +20 -0
  12. package/ios/PensaEventEmitter.swift +26 -0
  13. package/ios/PensaListeners.swift +37 -0
  14. package/ios/PensaSdkReactNative-Bridging-Header.h +43 -0
  15. package/ios/PensaSdkReactNative.mm +48 -0
  16. package/ios/PensaSdkReactNative.swift +121 -0
  17. package/ios/Podfile +35 -0
  18. package/lib/module/events.js +11 -0
  19. package/lib/module/events.js.map +1 -0
  20. package/lib/module/index.js +42 -0
  21. package/lib/module/index.js.map +1 -0
  22. package/lib/module/package.json +1 -0
  23. package/lib/module/types.js +2 -0
  24. package/lib/module/types.js.map +1 -0
  25. package/lib/typescript/package.json +1 -0
  26. package/lib/typescript/src/events.d.ts +7 -0
  27. package/lib/typescript/src/events.d.ts.map +1 -0
  28. package/lib/typescript/src/index.d.ts +16 -0
  29. package/lib/typescript/src/index.d.ts.map +1 -0
  30. package/lib/typescript/src/types.d.ts +26 -0
  31. package/lib/typescript/src/types.d.ts.map +1 -0
  32. package/package.json +154 -0
  33. package/src/events.ts +16 -0
  34. package/src/index.tsx +77 -0
  35. package/src/types.ts +29 -0
@@ -0,0 +1,172 @@
1
+ package com.pensasdkreactnative
2
+
3
+ import com.facebook.react.bridge.ReactApplicationContext
4
+ import com.facebook.react.bridge.ReactContextBaseJavaModule
5
+ import com.facebook.react.bridge.ReactMethod
6
+ import com.facebook.react.bridge.Promise
7
+ import com.facebook.react.bridge.ReadableMap
8
+ import com.pensasystems.pensasdk.PensaSdk
9
+ import com.pensasystems.pensasdk.PensaSdkConfiguration
10
+ import com.pensasystems.pensasdk.listener.CantScanEventListener
11
+ import com.pensasystems.pensasdk.listener.ScanUploadListener
12
+
13
+ class PensaSdkReactNativeModule(reactContext: ReactApplicationContext) :
14
+ ReactContextBaseJavaModule(reactContext) {
15
+ private val context = reactContext.applicationContext
16
+ private val rnContext = reactContext
17
+
18
+ init {
19
+ PensaListeners.setup(reactContext)
20
+ }
21
+
22
+ override fun getName(): String {
23
+ return NAME
24
+ }
25
+
26
+ companion object {
27
+ const val NAME = "PensaSdkReactNative"
28
+ }
29
+
30
+ @ReactMethod
31
+ fun initPensa(configMap: ReadableMap, promise: Promise) {
32
+ try {
33
+ val clientId = configMap.getString("clientId") ?: ""
34
+ val clientSecret = configMap.getString("clientSecret") ?: ""
35
+ val isLoggingEnabled = configMap.getBoolean("isLoggingEnabled")
36
+
37
+ val sdkConfig = PensaSdkConfiguration.Builder()
38
+ .setClientId(clientId)
39
+ .setClientSecret(clientSecret)
40
+ .enableLogging(isLoggingEnabled)
41
+ .setScanUploadListener(PensaListeners)
42
+ .setCantScanEventListener(PensaListeners)
43
+ .build()
44
+
45
+ PensaSdk.initPensa(
46
+ applicationContext = rnContext.applicationContext,
47
+ sdkConfiguration = sdkConfig,
48
+ onSuccess = {
49
+ promise.resolve(null)
50
+ },
51
+ onError = { errorMessage ->
52
+ if (!PensaSdk.isPensaStarted()) {
53
+ promise.reject("INIT_FAILED", errorMessage)
54
+ } else {
55
+ promise.resolve(null)
56
+ }
57
+ }
58
+ )
59
+
60
+ } catch (e: Exception) {
61
+ promise.reject("INIT_EXCEPTION", e.message, e)
62
+ }
63
+ }
64
+
65
+ @ReactMethod
66
+ fun isPensaStarted(promise: Promise) {
67
+ promise.resolve(PensaSdk.isPensaStarted())
68
+ }
69
+
70
+ @ReactMethod
71
+ fun showShelfScans(promise: Promise) {
72
+ val activity = reactApplicationContext.currentActivity
73
+ if (activity != null) {
74
+ PensaSdk.showShelfScans(
75
+ context = activity,
76
+ onError = { error -> promise.reject("SHOW_SHELF_SCANS_FAILED", error) }
77
+ )
78
+ promise.resolve(null)
79
+ } else {
80
+ promise.reject("NO_ACTIVITY", "Current activity is null")
81
+ }
82
+ }
83
+ @ReactMethod
84
+ fun showProductScans(promise: Promise) {
85
+ val activity = reactApplicationContext.currentActivity
86
+ if (activity != null) {
87
+ PensaSdk.showProductScans(
88
+ context = activity,
89
+ onError = { error -> promise.reject("SHOW_PRODUCT_SCANS_FAILED", error) }
90
+ )
91
+ promise.resolve(null)
92
+ } else {
93
+ promise.reject("NO_ACTIVITY", "Current activity is null")
94
+ }
95
+ }
96
+
97
+ @ReactMethod
98
+ fun showStoreSearchView(promise: Promise) {
99
+ val activity = reactApplicationContext.currentActivity
100
+ if (activity != null) {
101
+ PensaSdk.showStoreSearchView(
102
+ context = activity,
103
+ onError = { error -> promise.reject("SHOW_STORES_SEARCH_SCREEN_FAILED", error) }
104
+ )
105
+ promise.resolve(null)
106
+ } else {
107
+ promise.reject("NO_ACTIVITY", "Current activity is null")
108
+ }
109
+ }
110
+
111
+ @ReactMethod
112
+ fun showStoresScreen(promise: Promise) {
113
+ val activity = reactApplicationContext.currentActivity
114
+ if (activity != null) {
115
+ PensaSdk.showStoresScreen(
116
+ context = activity,
117
+ onError = { error -> promise.reject("SHOW_STORES_SCREEN_FAILED", error) }
118
+ )
119
+ promise.resolve(null)
120
+ } else {
121
+ promise.reject("NO_ACTIVITY", "Current activity is null")
122
+ }
123
+ }
124
+
125
+ @ReactMethod
126
+ fun showScanArea(scanId: Int, storeId: Int?, globalStoreId: String?, promise: Promise) {
127
+ val activity = reactApplicationContext.currentActivity
128
+ if (activity != null) {
129
+ PensaSdk.showScanArea(
130
+ context = activity,
131
+ scanId = scanId,
132
+ storeId = storeId,
133
+ globalStoreId = globalStoreId,
134
+ onError = { error -> promise.reject("SHOW_SCAN_AREA_FAILED", error) }
135
+ )
136
+ promise.resolve(null)
137
+ } else {
138
+ promise.reject("NO_ACTIVITY", "Current activity is null")
139
+ }
140
+ }
141
+
142
+ @ReactMethod
143
+ fun showStockingScreen(promise: Promise) {
144
+ val activity = reactApplicationContext.currentActivity
145
+ if (activity != null) {
146
+ PensaSdk.showStockingScreen(
147
+ context = activity,
148
+ onError = { error -> promise.reject("SHOW_STOCKING_SCREEN_FAILED", error) }
149
+ )
150
+ promise.resolve(null)
151
+ } else {
152
+ promise.reject("NO_ACTIVITY", "Current activity is null")
153
+ }
154
+ }
155
+
156
+ @ReactMethod
157
+ fun showStoreChecklist(globalStoreId: String, guid: String?, sectionKey: String?, promise: Promise) {
158
+ val activity = reactApplicationContext.currentActivity
159
+ if (activity != null) {
160
+ PensaSdk.showStoreChecklist(
161
+ context = activity,
162
+ globalStoreId = globalStoreId,
163
+ guid = guid,
164
+ sectionKey = sectionKey,
165
+ onError = { error -> promise.reject("SHOW_STORE_CHECKLIST_FAILED", error) }
166
+ )
167
+ promise.resolve(null)
168
+ } else {
169
+ promise.reject("NO_ACTIVITY", "Current activity is null")
170
+ }
171
+ }
172
+ }
@@ -0,0 +1,20 @@
1
+ package com.pensasdkreactnative
2
+
3
+ import com.facebook.react.ReactPackage
4
+ import com.facebook.react.bridge.NativeModule
5
+ import com.facebook.react.bridge.ReactApplicationContext
6
+ import com.facebook.react.uimanager.ViewManager
7
+
8
+
9
+ class PensaSdkReactNativePackage : ReactPackage {
10
+ override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> {
11
+ return listOf(
12
+ PensaSdkReactNativeModule(reactContext),
13
+ PensaEventEmitterModule(reactContext)
14
+ )
15
+ }
16
+
17
+ override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> {
18
+ return emptyList()
19
+ }
20
+ }
@@ -0,0 +1,26 @@
1
+ import Foundation
2
+ import React
3
+
4
+ @objc(PensaEventEmitter)
5
+ class PensaEventEmitter: RCTEventEmitter {
6
+
7
+ static var shared: PensaEventEmitter?
8
+
9
+ override init() {
10
+ super.init()
11
+ PensaEventEmitter.shared = self
12
+ }
13
+
14
+ override static func requiresMainQueueSetup() -> Bool {
15
+ return true
16
+ }
17
+
18
+ override func supportedEvents() -> [String] {
19
+ return [
20
+ "onScanUploadProgressUpdate",
21
+ "onScanUploadCompleted",
22
+ "onScanUploadFailed",
23
+ "onCantScanReported"
24
+ ]
25
+ }
26
+ }
@@ -0,0 +1,37 @@
1
+ import Foundation
2
+ import PensaSdk
3
+
4
+ class PensaListeners: NSObject, ScanUploadListener, CantScanEventListener {
5
+
6
+ static let shared = PensaListeners()
7
+
8
+ private override init() {}
9
+
10
+ func onScanUploadProgressUpdate(tdlinxId: String, scanAreaId: String, progress: Double) {
11
+ PensaEventEmitter.shared?.sendEvent(
12
+ withName: "onScanUploadProgressUpdate",
13
+ body: ["tdlinxId": tdlinxId, "scanAreaId": scanAreaId, "progress": progress]
14
+ )
15
+ }
16
+
17
+ func onScanUploadCompleted(tdlinxId: String, scanAreaId: String) {
18
+ PensaEventEmitter.shared?.sendEvent(
19
+ withName: "onScanUploadCompleted",
20
+ body: ["tdlinxId": tdlinxId, "scanAreaId": scanAreaId]
21
+ )
22
+ }
23
+
24
+ func onScanUploadFailed(tdlinxId: String, scanAreaId: String, error: Error) {
25
+ PensaEventEmitter.shared?.sendEvent(
26
+ withName: "onScanUploadFailed",
27
+ body: ["tdlinxId": tdlinxId, "scanAreaId": scanAreaId, "error": error.localizedDescription]
28
+ )
29
+ }
30
+
31
+ func onCantScanReported(tdlinxId: String, scanAreaId: String, cantScanReason: String) {
32
+ PensaEventEmitter.shared?.sendEvent(
33
+ withName: "onCantScanReported",
34
+ body: ["tdlinxId": tdlinxId, "scanAreaId": scanAreaId, "reason": cantScanReason]
35
+ )
36
+ }
37
+ }
@@ -0,0 +1,43 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTEventEmitter.h>
3
+
4
+ @interface RCT_EXTERN_MODULE(PensaSdkReactNative, NSObject)
5
+
6
+ RCT_EXTERN_METHOD(initPensa:(NSDictionary *)config
7
+ withResolver:(RCTPromiseResolveBlock)resolve
8
+ withRejecter:(RCTPromiseRejectBlock)reject)
9
+
10
+ RCT_EXTERN_METHOD(isPensaStarted:(RCTPromiseResolveBlock)resolve
11
+ withRejecter:(RCTPromiseRejectBlock)reject)
12
+
13
+ RCT_EXTERN_METHOD(showShelfScans:(RCTPromiseResolveBlock)resolve
14
+ withRejecter:(RCTPromiseRejectBlock)reject)
15
+
16
+ RCT_EXTERN_METHOD(showProductScans:(RCTPromiseResolveBlock)resolve
17
+ withRejecter:(RCTPromiseRejectBlock)reject)
18
+
19
+ RCT_EXTERN_METHOD(showStoreSearchView:(RCTPromiseResolveBlock)resolve
20
+ withRejecter:(RCTPromiseRejectBlock)reject)
21
+
22
+ RCT_EXTERN_METHOD(showStoresScreen:(RCTPromiseResolveBlock)resolve
23
+ withRejecter:(RCTPromiseRejectBlock)reject)
24
+
25
+ RCT_EXTERN_METHOD(showStockingScreen:(RCTPromiseResolveBlock)resolve
26
+ withRejecter:(RCTPromiseRejectBlock)reject)
27
+
28
+ RCT_EXTERN_METHOD(showScanArea:(nonnull NSNumber *)scanId
29
+ storeId:(nullable NSNumber *)storeId
30
+ globalStoreId:(nullable NSString *)globalStoreId
31
+ withResolver:(RCTPromiseResolveBlock)resolve
32
+ withRejecter:(RCTPromiseRejectBlock)reject)
33
+
34
+ RCT_EXTERN_METHOD(showStoreChecklist:(NSString *)globalStoreId
35
+ guid:(NSString * _Nullable)guid
36
+ sectionKey:(NSString * _Nullable)sectionKey
37
+ withResolver:(RCTPromiseResolveBlock)resolve
38
+ withRejecter:(RCTPromiseRejectBlock)reject)
39
+
40
+ @end
41
+
42
+ @interface RCT_EXTERN_MODULE(PensaEventEmitter, RCTEventEmitter)
43
+ @end
@@ -0,0 +1,48 @@
1
+ #import <React/RCTBridgeModule.h>
2
+ #import <React/RCTEventEmitter.h>
3
+
4
+ @interface RCT_EXTERN_MODULE(PensaSdkReactNative, NSObject)
5
+
6
+ RCT_EXTERN_METHOD(initPensa:(NSDictionary *)config
7
+ withResolver:(RCTPromiseResolveBlock)resolve
8
+ withRejecter:(RCTPromiseRejectBlock)reject)
9
+
10
+ RCT_EXTERN_METHOD(isPensaStarted:(RCTPromiseResolveBlock)resolve
11
+ withRejecter:(RCTPromiseRejectBlock)reject)
12
+
13
+ RCT_EXTERN_METHOD(showShelfScans:(RCTPromiseResolveBlock)resolve
14
+ withRejecter:(RCTPromiseRejectBlock)reject)
15
+
16
+ RCT_EXTERN_METHOD(showProductScans:(RCTPromiseResolveBlock)resolve
17
+ withRejecter:(RCTPromiseRejectBlock)reject)
18
+
19
+ RCT_EXTERN_METHOD(showStoreSearchView:(RCTPromiseResolveBlock)resolve
20
+ withRejecter:(RCTPromiseRejectBlock)reject)
21
+
22
+ RCT_EXTERN_METHOD(showStoresScreen:(RCTPromiseResolveBlock)resolve
23
+ withRejecter:(RCTPromiseRejectBlock)reject)
24
+
25
+ RCT_EXTERN_METHOD(showStockingScreen:(RCTPromiseResolveBlock)resolve
26
+ withRejecter:(RCTPromiseRejectBlock)reject)
27
+
28
+ RCT_EXTERN_METHOD(showScanArea:(nonnull NSNumber *)scanId
29
+ storeId:(nullable NSNumber *)storeId
30
+ globalStoreId:(nullable NSString *)globalStoreId
31
+ withResolver:(RCTPromiseResolveBlock)resolve
32
+ withRejecter:(RCTPromiseRejectBlock)reject)
33
+
34
+ RCT_EXTERN_METHOD(showStoreChecklist:(NSString *)globalStoreId
35
+ guid:(NSString * _Nullable)guid
36
+ sectionKey:(NSString * _Nullable)sectionKey
37
+ withResolver:(RCTPromiseResolveBlock)resolve
38
+ withRejecter:(RCTPromiseRejectBlock)reject)
39
+
40
+ + (BOOL)requiresMainQueueSetup
41
+ {
42
+ return NO;
43
+ }
44
+
45
+ @end
46
+
47
+ @interface RCT_EXTERN_MODULE(PensaEventEmitter, RCTEventEmitter)
48
+ @end
@@ -0,0 +1,121 @@
1
+ import Foundation
2
+ import PensaSdk
3
+
4
+ @objc(PensaSdkReactNative)
5
+ class PensaSdkReactNative: NSObject {
6
+
7
+ @objc
8
+ static func requiresMainQueueSetup() -> Bool {
9
+ return true
10
+ }
11
+
12
+ @objc(initPensa:withResolver:withRejecter:)
13
+ func initPensa(config: NSDictionary,
14
+ resolve: @escaping RCTPromiseResolveBlock,
15
+ reject: @escaping RCTPromiseRejectBlock) {
16
+ guard let clientId = config["clientId"] as? String,
17
+ let clientSecret = config["clientSecret"] as? String else {
18
+ reject("INVALID_CONFIG", "clientId and clientSecret are required", nil)
19
+ return
20
+ }
21
+
22
+ let loggingEnabled = config["isLoggingEnabled"] as? Bool ?? false
23
+
24
+ let configuration = PensaConfiguration.Builder()
25
+ .setClientId(clientId)
26
+ .setClientSecret(clientSecret)
27
+ .setLoggingEnabled(loggingEnabled)
28
+ .setScanUploadListener(PensaListeners.shared)
29
+ .setCantScanEventListener(PensaListeners.shared)
30
+ .build()
31
+
32
+ DispatchQueue.main.async {
33
+ Pensa.shared.initPensa(config: configuration) { error in
34
+ if let error = error {
35
+ reject("INIT_FAILED", error.localizedDescription, error)
36
+ } else {
37
+ resolve(nil)
38
+ }
39
+ }
40
+ }
41
+ }
42
+
43
+ @objc(isPensaStarted:withRejecter:)
44
+ func isPensaStarted(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
45
+ DispatchQueue.main.async {
46
+ resolve(Pensa.shared.isPensaStarted())
47
+ }
48
+ }
49
+
50
+ @objc(showShelfScans:withRejecter:)
51
+ func showShelfScans(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
52
+ DispatchQueue.main.async {
53
+ Pensa.shared.showShelfScans()
54
+ resolve(nil)
55
+ }
56
+ }
57
+
58
+ @objc(showProductScans:withRejecter:)
59
+ func showProductScans(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
60
+ DispatchQueue.main.async {
61
+ Pensa.shared.showProductScans()
62
+ resolve(nil)
63
+ }
64
+ }
65
+
66
+ @objc(showStoreSearchView:withRejecter:)
67
+ func showStoreSearchView(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
68
+ DispatchQueue.main.async {
69
+ Pensa.shared.showStoreSearchView()
70
+ resolve(nil)
71
+ }
72
+ }
73
+
74
+ @objc(showStoresScreen:withRejecter:)
75
+ func showStoresScreen(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
76
+ DispatchQueue.main.async {
77
+ Pensa.shared.showStoresScreen()
78
+ resolve(nil)
79
+ }
80
+ }
81
+
82
+ @objc(showStockingScreen:withRejecter:)
83
+ func showStockingScreen(resolve: @escaping RCTPromiseResolveBlock, reject: @escaping RCTPromiseRejectBlock) {
84
+ DispatchQueue.main.async {
85
+ Pensa.shared.showStockingScreen()
86
+ resolve(nil)
87
+ }
88
+ }
89
+
90
+ @objc(showScanArea:storeId:globalStoreId:withResolver:withRejecter:)
91
+ func showScanArea(scanId: NSNumber,
92
+ storeId: NSNumber?,
93
+ globalStoreId: String?,
94
+ resolve: @escaping RCTPromiseResolveBlock,
95
+ reject: @escaping RCTPromiseRejectBlock) {
96
+ DispatchQueue.main.async {
97
+ Pensa.shared.showScanArea(
98
+ scanId: scanId.intValue,
99
+ storeId: storeId?.intValue,
100
+ globalStoreId: globalStoreId
101
+ )
102
+ resolve(nil)
103
+ }
104
+ }
105
+
106
+ @objc(showStoreChecklist:guid:sectionKey:withResolver:withRejecter:)
107
+ func showStoreChecklist(globalStoreId: NSString,
108
+ guid: NSString?,
109
+ sectionKey: NSString?,
110
+ resolve: @escaping RCTPromiseResolveBlock,
111
+ reject: @escaping RCTPromiseRejectBlock) {
112
+ DispatchQueue.main.async {
113
+ Pensa.shared.showStoreChecklist(
114
+ sectionKey: sectionKey as String?,
115
+ guid: guid as String?,
116
+ globalStoreId: globalStoreId as String
117
+ )
118
+ resolve(nil)
119
+ }
120
+ }
121
+ }
package/ios/Podfile ADDED
@@ -0,0 +1,35 @@
1
+ # Resolve react_native_pods.rb with node to allow for hoisting
2
+ require Pod::Executable.execute_command('node', ['-p',
3
+ 'require.resolve(
4
+ "react-native/scripts/react_native_pods.rb",
5
+ {paths: [process.argv[1]]},
6
+ )', __dir__]).strip
7
+
8
+ platform :ios, min_ios_version_supported
9
+ prepare_react_native_project!
10
+
11
+ linkage = ENV['USE_FRAMEWORKS']
12
+ if linkage != nil
13
+ Pod::UI.puts "Configuring Pod with #{linkage}ally linked Frameworks".green
14
+ use_frameworks! :linkage => linkage.to_sym
15
+ end
16
+
17
+ target 'PensaSdkReactNativeExample' do
18
+ config = use_native_modules!
19
+
20
+ use_react_native!(
21
+ :path => config[:reactNativePath],
22
+ # An absolute path to your application root.
23
+ :app_path => "#{Pod::Config.instance.installation_root}/.."
24
+ )
25
+
26
+ post_install do |installer|
27
+ # https://github.com/facebook/react-native/blob/main/packages/react-native/scripts/react_native_pods.rb#L197-L202
28
+ react_native_post_install(
29
+ installer,
30
+ config[:reactNativePath],
31
+ :mac_catalyst_enabled => false,
32
+ # :ccache_enabled => true
33
+ )
34
+ end
35
+ end
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+
3
+ import { NativeEventEmitter, NativeModules } from 'react-native';
4
+ const nativeEmitter = new NativeEventEmitter(NativeModules.PensaEventEmitter);
5
+ export const PensaEvents = {
6
+ addListener: (event, callback) => {
7
+ const sub = nativeEmitter.addListener(event, callback);
8
+ return () => sub.remove();
9
+ }
10
+ };
11
+ //# sourceMappingURL=events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeEventEmitter","NativeModules","nativeEmitter","PensaEventEmitter","PensaEvents","addListener","event","callback","sub","remove"],"sourceRoot":"../../src","sources":["events.ts"],"mappings":";;AAAA,SAASA,kBAAkB,EAAEC,aAAa,QAAQ,cAAc;AAGhE,MAAMC,aAAa,GAAG,IAAIF,kBAAkB,CAACC,aAAa,CAACE,iBAAiB,CAAC;AAI7E,OAAO,MAAMC,WAAW,GAAG;EACzBC,WAAW,EAAEA,CACXC,KAAQ,EACRC,QAA+C,KAC5C;IACH,MAAMC,GAAG,GAAGN,aAAa,CAACG,WAAW,CAACC,KAAK,EAAEC,QAAQ,CAAC;IACtD,OAAO,MAAMC,GAAG,CAACC,MAAM,CAAC,CAAC;EAC3B;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+
3
+ import { NativeModules, Platform } from 'react-native';
4
+ const LINKING_ERROR = `The package 'pensa-sdk-react-native' doesn't seem to be linked. Make sure: \n\n` + Platform.select({
5
+ ios: "- You have run 'pod install'\n",
6
+ default: ''
7
+ }) + '- You rebuilt the app after installing the package\n' + '- You are not using Expo Go\n';
8
+ const PensaSdkReactNative = NativeModules.PensaSdkReactNative ? NativeModules.PensaSdkReactNative : new Proxy({}, {
9
+ get() {
10
+ throw new Error(LINKING_ERROR);
11
+ }
12
+ });
13
+ export const initPensa = config => {
14
+ return PensaSdkReactNative.initPensa(config);
15
+ };
16
+ export const isPensaStarted = () => {
17
+ return PensaSdkReactNative.isPensaStarted();
18
+ };
19
+ export const showShelfScans = () => {
20
+ return PensaSdkReactNative.showShelfScans();
21
+ };
22
+ export const showProductScans = () => {
23
+ return PensaSdkReactNative.showProductScans();
24
+ };
25
+ export const showStoreSearchView = () => {
26
+ return PensaSdkReactNative.showStoreSearchView();
27
+ };
28
+ export const showStoresScreen = () => {
29
+ return PensaSdkReactNative.showStoresScreen();
30
+ };
31
+ export const showScanArea = (scanId, storeId, globalStoreId) => {
32
+ return PensaSdkReactNative.showScanArea(scanId, storeId ?? null, globalStoreId ?? null);
33
+ };
34
+ export const showStockingScreen = () => {
35
+ return PensaSdkReactNative.showStockingScreen();
36
+ };
37
+ export const showStoreChecklist = (globalStoreId, guid, sectionKey) => {
38
+ return PensaSdkReactNative.showStoreChecklist(globalStoreId, guid, sectionKey);
39
+ };
40
+ export * from "./events.js";
41
+ export * from "./types.js";
42
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["types.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,7 @@
1
+ import type { PensaEventPayloads } from './types';
2
+ type PensaEvent = keyof PensaEventPayloads;
3
+ export declare const PensaEvents: {
4
+ addListener: <E extends PensaEvent>(event: E, callback: (data: PensaEventPayloads[E]) => void) => () => void;
5
+ };
6
+ export {};
7
+ //# sourceMappingURL=events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../src/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAIlD,KAAK,UAAU,GAAG,MAAM,kBAAkB,CAAC;AAE3C,eAAO,MAAM,WAAW;kBACR,CAAC,SAAS,UAAU,SACzB,CAAC,YACE,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC,CAAC,KAAK,IAAI;CAKlD,CAAC"}
@@ -0,0 +1,16 @@
1
+ export declare const initPensa: (config: {
2
+ clientId: string;
3
+ clientSecret: string;
4
+ isLoggingEnabled?: boolean;
5
+ }) => Promise<void>;
6
+ export declare const isPensaStarted: () => Promise<boolean>;
7
+ export declare const showShelfScans: () => Promise<void>;
8
+ export declare const showProductScans: () => Promise<void>;
9
+ export declare const showStoreSearchView: () => Promise<void>;
10
+ export declare const showStoresScreen: () => Promise<void>;
11
+ export declare const showScanArea: (scanId: number, storeId?: number, globalStoreId?: string) => Promise<void>;
12
+ export declare const showStockingScreen: () => Promise<void>;
13
+ export declare const showStoreChecklist: (globalStoreId: string, guid?: string, sectionKey?: string) => Promise<void>;
14
+ export * from './events';
15
+ export * from './types';
16
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,26 @@
1
+ export type OnScanUploadProgressUpdate = {
2
+ tdlinxId: string;
3
+ scanAreaId: string;
4
+ progress: number;
5
+ };
6
+ export type OnScanUploadCompleted = {
7
+ tdlinxId: string;
8
+ scanAreaId: string;
9
+ };
10
+ export type OnScanUploadFailed = {
11
+ tdlinxId: string;
12
+ scanAreaId: string;
13
+ error?: string;
14
+ };
15
+ export type OnCantScanReported = {
16
+ tdlinxId: string;
17
+ scanAreaId: string;
18
+ reason: string;
19
+ };
20
+ export type PensaEventPayloads = {
21
+ onScanUploadProgressUpdate: OnScanUploadProgressUpdate;
22
+ onScanUploadCompleted: OnScanUploadCompleted;
23
+ onScanUploadFailed: OnScanUploadFailed;
24
+ onCantScanReported: OnCantScanReported;
25
+ };
26
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}