banking_dcb_sdk_react_native 1.0.7 → 1.0.9

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 (147) hide show
  1. package/BankingDcbSdkReactNative.podspec +28 -0
  2. package/android/app/build/generated/source/codegen/RCTAppDependencyProvider.h +25 -0
  3. package/android/app/build/generated/source/codegen/RCTAppDependencyProvider.mm +55 -0
  4. package/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.h +18 -0
  5. package/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.mm +33 -0
  6. package/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.h +16 -0
  7. package/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.mm +62 -0
  8. package/android/app/build/generated/source/codegen/ReactAppDependencyProvider.podspec +34 -0
  9. package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeAsyncStorageModuleSpec.java +59 -0
  10. package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeBlobUtilsSpec.java +280 -0
  11. package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeRNCWebViewModuleSpec.java +42 -0
  12. package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeRNPermissionsSpec.java +87 -0
  13. package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeSafeAreaContextSpec.java +65 -0
  14. package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeScreensModuleSpec.java +35 -0
  15. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerDelegate.java +26 -0
  16. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerInterface.java +17 -0
  17. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerDelegate.java +36 -0
  18. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerInterface.java +20 -0
  19. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCWebViewManagerDelegate.java +301 -0
  20. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCWebViewManagerInterface.java +107 -0
  21. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsManagerDelegate.java +84 -0
  22. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsManagerInterface.java +35 -0
  23. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerDelegate.java +101 -0
  24. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerInterface.java +42 -0
  25. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSFullWindowOverlayManagerDelegate.java +32 -0
  26. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSFullWindowOverlayManagerInterface.java +17 -0
  27. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSModalScreenManagerDelegate.java +128 -0
  28. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSModalScreenManagerInterface.java +51 -0
  29. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSafeAreaViewManagerDelegate.java +36 -0
  30. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSafeAreaViewManagerInterface.java +20 -0
  31. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +26 -0
  32. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +17 -0
  33. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerDelegate.java +26 -0
  34. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerInterface.java +17 -0
  35. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java +26 -0
  36. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java +17 -0
  37. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +140 -0
  38. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +55 -0
  39. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenNavigationContainerManagerDelegate.java +26 -0
  40. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenNavigationContainerManagerInterface.java +17 -0
  41. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +121 -0
  42. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +48 -0
  43. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerDelegate.java +35 -0
  44. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerInterface.java +19 -0
  45. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHostManagerDelegate.java +26 -0
  46. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHostManagerInterface.java +17 -0
  47. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackManagerDelegate.java +26 -0
  48. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackManagerInterface.java +17 -0
  49. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +106 -0
  50. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +40 -0
  51. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewHostManagerDelegate.java +57 -0
  52. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewHostManagerInterface.java +27 -0
  53. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewScreenManagerDelegate.java +32 -0
  54. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewScreenManagerInterface.java +18 -0
  55. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSStackScreenManagerDelegate.java +35 -0
  56. package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSStackScreenManagerInterface.java +19 -0
  57. package/android/app/build/generated/source/codegen/jni/BankingDcbSdkReactNative-generated.cpp +22 -0
  58. package/android/app/build/generated/source/codegen/jni/BankingDcbSdkReactNative.h +24 -0
  59. package/android/app/build/generated/source/codegen/jni/CMakeLists.txt +36 -0
  60. package/android/app/build/generated/source/codegen/jni/RNCWebViewSpec-generated.cpp +38 -0
  61. package/android/app/build/generated/source/codegen/jni/RNCWebViewSpec.h +31 -0
  62. package/android/app/build/generated/source/codegen/jni/RNPermissionsSpec-generated.cpp +104 -0
  63. package/android/app/build/generated/source/codegen/jni/RNPermissionsSpec.h +31 -0
  64. package/android/app/build/generated/source/codegen/jni/ReactNativeBlobUtilSpec-generated.cpp +320 -0
  65. package/android/app/build/generated/source/codegen/jni/ReactNativeBlobUtilSpec.h +31 -0
  66. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/BankingDcbSdkReactNativeJSI-generated.cpp +17 -0
  67. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/BankingDcbSdkReactNativeJSI.h +19 -0
  68. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/ComponentDescriptors.cpp +22 -0
  69. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/ComponentDescriptors.h +24 -0
  70. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/EventEmitters.cpp +16 -0
  71. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/EventEmitters.h +17 -0
  72. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/Props.cpp +19 -0
  73. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/Props.h +18 -0
  74. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/ShadowNodes.cpp +17 -0
  75. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/ShadowNodes.h +23 -0
  76. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/States.cpp +16 -0
  77. package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/States.h +19 -0
  78. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ComponentDescriptors.cpp +22 -0
  79. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ComponentDescriptors.h +24 -0
  80. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/EventEmitters.cpp +258 -0
  81. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/EventEmitters.h +277 -0
  82. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/Props.cpp +101 -0
  83. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/Props.h +507 -0
  84. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/RNCWebViewSpecJSI-generated.cpp +35 -0
  85. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/RNCWebViewSpecJSI.h +80 -0
  86. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ShadowNodes.cpp +17 -0
  87. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ShadowNodes.h +32 -0
  88. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/States.cpp +16 -0
  89. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/States.h +29 -0
  90. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNPermissionsSpec/RNPermissionsSpecJSI-generated.cpp +106 -0
  91. package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNPermissionsSpec/RNPermissionsSpecJSI.h +226 -0
  92. package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpecJSI-generated.cpp +449 -0
  93. package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpecJSI.h +503 -0
  94. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnasyncstorage/rnasyncstorageJSI-generated.cpp +72 -0
  95. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnasyncstorage/rnasyncstorageJSI.h +116 -0
  96. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ComponentDescriptors.cpp +31 -0
  97. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ComponentDescriptors.h +33 -0
  98. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/EventEmitters.cpp +499 -0
  99. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/EventEmitters.h +422 -0
  100. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/Props.cpp +307 -0
  101. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/Props.h +1391 -0
  102. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ShadowNodes.cpp +26 -0
  103. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ShadowNodes.h +131 -0
  104. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/States.cpp +16 -0
  105. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/States.h +137 -0
  106. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/rnscreensJSI-generated.cpp +22 -0
  107. package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/rnscreensJSI.h +64 -0
  108. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ComponentDescriptors.cpp +22 -0
  109. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ComponentDescriptors.h +24 -0
  110. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/EventEmitters.cpp +40 -0
  111. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/EventEmitters.h +47 -0
  112. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/Props.cpp +33 -0
  113. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/Props.h +85 -0
  114. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ShadowNodes.cpp +17 -0
  115. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ShadowNodes.h +32 -0
  116. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/States.cpp +16 -0
  117. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/States.h +29 -0
  118. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/safeareacontextJSI-generated.cpp +26 -0
  119. package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/safeareacontextJSI.h +71 -0
  120. package/android/app/build/generated/source/codegen/jni/rnasyncstorage-generated.cpp +62 -0
  121. package/android/app/build/generated/source/codegen/jni/rnasyncstorage.h +31 -0
  122. package/android/app/build/generated/source/codegen/jni/rnscreens-generated.cpp +29 -0
  123. package/android/app/build/generated/source/codegen/jni/rnscreens.h +31 -0
  124. package/android/app/build/generated/source/codegen/jni/safeareacontext-generated.cpp +32 -0
  125. package/android/app/build/generated/source/codegen/jni/safeareacontext.h +31 -0
  126. package/lib/module/helpers/banking_dcb_react_native.js +71 -13
  127. package/lib/module/helpers/banking_dcb_react_native.js.map +1 -1
  128. package/lib/module/helpers/utils/Constants.js +9 -7
  129. package/lib/module/helpers/utils/Constants.js.map +1 -1
  130. package/lib/module/helpers/utils/webviewCallback.js +11 -0
  131. package/lib/module/helpers/utils/webviewCallback.js.map +1 -1
  132. package/lib/module/helpers/webview.js +120 -60
  133. package/lib/module/helpers/webview.js.map +1 -1
  134. package/lib/typescript/src/helpers/banking_dcb_react_native.d.ts +2 -2
  135. package/lib/typescript/src/helpers/banking_dcb_react_native.d.ts.map +1 -1
  136. package/lib/typescript/src/helpers/utils/Constants.d.ts +2 -0
  137. package/lib/typescript/src/helpers/utils/Constants.d.ts.map +1 -1
  138. package/lib/typescript/src/helpers/utils/webviewCallback.d.ts +10 -1
  139. package/lib/typescript/src/helpers/utils/webviewCallback.d.ts.map +1 -1
  140. package/lib/typescript/src/helpers/webview.d.ts +8 -0
  141. package/lib/typescript/src/helpers/webview.d.ts.map +1 -1
  142. package/package.json +4 -4
  143. package/src/helpers/banking_dcb_react_native.tsx +135 -18
  144. package/src/helpers/utils/Constants.tsx +10 -9
  145. package/src/helpers/utils/webviewCallback.tsx +32 -16
  146. package/src/helpers/webview.tsx +142 -65
  147. package/PartnerReactNativeSdk.podspec +0 -31
@@ -1,15 +1,26 @@
1
1
  import { APICall } from './network/APICall';
2
2
  import { DeviceInfoManager } from './utils/deviceInfoManager';
3
3
  import { LibraryConstants } from './utils/LibraryConstants';
4
- import { type WebViewCallbackFunction } from './utils/webviewCallback';
4
+ import {
5
+ SdkCallbackStatus,
6
+ WebViewCallback,
7
+ type WebViewCallbackFunction,
8
+ } from './utils/webviewCallback';
5
9
  import { ServiceNames } from './ServiceNames';
6
10
  import { Constants } from './utils/Constants';
7
11
  import { WebView } from './webview';
8
12
  import { SafeAreaView } from 'react-native-safe-area-context';
9
- import { StatusBar } from 'react-native';
13
+ import {
14
+ Alert,
15
+ PermissionsAndroid,
16
+ Platform,
17
+ StatusBar,
18
+ ToastAndroid,
19
+ } from 'react-native';
10
20
  export type { WebViewCallbackFunction } from './utils/webviewCallback';
11
21
  import { AnalyticsLogger } from './analytics/analytics_logger';
12
22
  import * as base64js from 'base64-js';
23
+ import GetLocation, { type Location } from 'react-native-get-location';
13
24
 
14
25
  type InitOptions = {
15
26
  whitelistedDomains: string[];
@@ -28,7 +39,6 @@ export class BankingDcbReactNative {
28
39
 
29
40
  private _apiCall = new APICall();
30
41
  static webViewCallback: WebViewCallbackFunction;
31
- private _analyticsLogger!: AnalyticsLogger;
32
42
  private constructor() {}
33
43
 
34
44
  static getInstance(): BankingDcbReactNative {
@@ -45,7 +55,7 @@ export class BankingDcbReactNative {
45
55
  deviceBindingEnabled: false,
46
56
  }
47
57
  ): Promise<void> {
48
- // console.log("PartnerLibrary.init - initialized:", PartnerLibrary.intialized);
58
+ console.log('SDK LOG: SDK INITIALIZED');
49
59
  if (BankingDcbReactNative.intialized) return;
50
60
 
51
61
  try {
@@ -82,7 +92,6 @@ export class BankingDcbReactNative {
82
92
  whitelistedDomains: whitelistedDomains,
83
93
  deviceBinding: deviceBindingEnabled,
84
94
  });
85
- this._analyticsLogger = new AnalyticsLogger();
86
95
  // this._analyticsLogger.logEvent({ event: 'REACT_NATIVE_INTIALIZED' });
87
96
  }
88
97
 
@@ -90,7 +99,7 @@ export class BankingDcbReactNative {
90
99
  module: string,
91
100
  token: string,
92
101
  WebViewCallbackFunction: WebViewCallbackFunction
93
- ): Promise<React.ReactElement> {
102
+ ): Promise<React.ReactElement | null> {
94
103
  // this._analyticsLogger.logEvent({ event: 'REACT_NATIVE_OPEN_FN_CALLED' });
95
104
 
96
105
  if (!BankingDcbReactNative.intialized) {
@@ -122,7 +131,7 @@ export class BankingDcbReactNative {
122
131
  bank: string,
123
132
  url: string,
124
133
  WebViewCallbackFunction: WebViewCallbackFunction
125
- ): Promise<React.ReactElement> {
134
+ ): Promise<React.ReactElement | null> {
126
135
  // this._analyticsLogger.logEvent({
127
136
  // event: 'REACT_NATIVE_DEVICE_BINDING_CALLED',
128
137
  // });
@@ -143,7 +152,7 @@ export class BankingDcbReactNative {
143
152
  bank: string,
144
153
  token: string,
145
154
  WebViewCallbackFunction: WebViewCallbackFunction
146
- ): Promise<React.ReactElement> {
155
+ ): Promise<React.ReactElement | null> {
147
156
  // console.log("PartnerLibrary._loginAndNavigateToWebView - LibraryConstants.hostName:", LibraryConstants.hostName);
148
157
  try {
149
158
  // this._analyticsLogger.logEvent({ event: 'REACT_NATIVE_LOGIN_FN_CALLED' });
@@ -207,7 +216,7 @@ export class BankingDcbReactNative {
207
216
  bank: string,
208
217
  url: string,
209
218
  WebViewCallbackFunction: WebViewCallbackFunction
210
- ): Promise<React.ReactElement> {
219
+ ): Promise<React.ReactElement | null> {
211
220
  try {
212
221
  console.log('SDK:LOG: in setup device session');
213
222
 
@@ -219,19 +228,34 @@ export class BankingDcbReactNative {
219
228
  console.log('App Version:', appVersion);
220
229
  }
221
230
  console.log('SDK:LOG device uuid is ');
231
+ const position = await this._getCurrentLocationIfPossible(
232
+ BankingDcbReactNative.webViewCallback
233
+ );
222
234
 
235
+ if (!position) {
236
+ console.log('SDK:LOG: location fetched is : ', position);
237
+ return null;
238
+ }
239
+
240
+ const latitude = String(position.latitude);
241
+ const longitude = String(position.longitude);
242
+
243
+ const body: JSONMap = {
244
+ [Constants.MANUFACTURER]: deviceInfo[Constants.MANUFACTURER],
245
+ [Constants.MODEL]: deviceInfo[Constants.MODEL],
246
+ [Constants.DEVICE_UUID]: deviceInfo[Constants.DEVICE_UUID],
247
+ [Constants.OS]: deviceInfo[Constants.OS],
248
+ [Constants.OS_VERSION]: deviceInfo[Constants.OS_VERSION],
249
+ [Constants.APP_VERSION]: appVersion,
250
+ [Constants.LATITUDE]: latitude,
251
+ [Constants.LONGITUDE]: longitude,
252
+ };
253
+ console.log('SDK:LOG: body for device session is : ', body);
223
254
  const response = await this._apiCall.callAPI(
224
255
  'POST',
225
256
  ServiceNames.DEVICE_SESSION.params({ partner: bank }),
226
257
  {
227
- body: {
228
- [Constants.MANUFACTURER]: deviceInfo[Constants.MANUFACTURER],
229
- [Constants.MODEL]: deviceInfo[Constants.MODEL],
230
- [Constants.DEVICE_UUID]: deviceInfo[Constants.DEVICE_UUID],
231
- [Constants.OS]: deviceInfo[Constants.OS],
232
- [Constants.OS_VERSION]: deviceInfo[Constants.OS_VERSION],
233
- [Constants.APP_VERSION]: appVersion,
234
- },
258
+ body,
235
259
  }
236
260
  );
237
261
  //console.log("response from setup device session is : ", response)
@@ -380,7 +404,7 @@ export class BankingDcbReactNative {
380
404
  [Constants.MANUFACTURER]: deviceInfo[Constants.MANUFACTURER],
381
405
  [Constants.MODEL]: deviceInfo[Constants.MODEL],
382
406
  [Constants.DEVICE_UUID]: deviceInfo[Constants.DEVICE_UUID],
383
- [Constants.OS]: deviceInfo[Constants.OS], // "Android"/"iOS" from your manager
407
+ [Constants.OS]: deviceInfo[Constants.OS],
384
408
  [Constants.OS_VERSION]: deviceInfo[Constants.OS_VERSION],
385
409
  [Constants.APP_VERSION]: appVersion,
386
410
  },
@@ -410,4 +434,97 @@ export class BankingDcbReactNative {
410
434
  };
411
435
  }
412
436
  }
437
+
438
+ private async _getCurrentLocationIfPossible(
439
+ webViewCallback: WebViewCallbackFunction
440
+ ): Promise<Location | null> {
441
+ try {
442
+ console.log('SDK:LOG: in get current location');
443
+
444
+ if (Platform.OS === 'android') {
445
+ const hasFineLocation = await PermissionsAndroid.check(
446
+ PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION
447
+ );
448
+
449
+ let result: string;
450
+
451
+ if (!hasFineLocation) {
452
+ result = await PermissionsAndroid.request(
453
+ PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION
454
+ );
455
+ } else {
456
+ result = PermissionsAndroid.RESULTS.GRANTED;
457
+ }
458
+
459
+ console.log('SDK:LOG: ANDROID LOCATION PERMISSION RESULT =>', result);
460
+
461
+ if (result === PermissionsAndroid.RESULTS.DENIED) {
462
+ webViewCallback(
463
+ WebViewCallback.sdkEvent(
464
+ SdkCallbackStatus.userLocationPermissionDenied
465
+ )
466
+ );
467
+ return null;
468
+ }
469
+
470
+ if (result === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) {
471
+ ToastAndroid.show(
472
+ 'Location permission denied. Please enable it from Settings.',
473
+ ToastAndroid.LONG
474
+ );
475
+ webViewCallback(
476
+ WebViewCallback.sdkEvent(
477
+ SdkCallbackStatus.userLocationPermissionPermanentlyDenied
478
+ )
479
+ );
480
+ return null;
481
+ }
482
+ }
483
+
484
+ const location = await GetLocation.getCurrentPosition({
485
+ enableHighAccuracy: true,
486
+ timeout: 15000,
487
+ });
488
+
489
+ console.log('SDK:LOG: 📍 Got position via GetLocation:', {
490
+ latitude: location.latitude,
491
+ longitude: location.longitude,
492
+ accuracy: location.accuracy,
493
+ time: location.time,
494
+ });
495
+
496
+ return location;
497
+ } catch (error: any) {
498
+ console.log(
499
+ 'SDK:LOG: Error while fetching location (GetLocation):',
500
+ error
501
+ );
502
+
503
+ const code = error?.code as string | undefined;
504
+
505
+ if (code === 'UNAUTHORIZED') {
506
+ webViewCallback(
507
+ WebViewCallback.sdkEvent(
508
+ SdkCallbackStatus.userLocationPermissionDenied
509
+ )
510
+ );
511
+ } else if (code === 'UNAVAILABLE') {
512
+ webViewCallback(
513
+ WebViewCallback.sdkEvent(
514
+ SdkCallbackStatus.userLocationServiceDisabled
515
+ )
516
+ );
517
+ } else if (code === 'TIMEOUT') {
518
+ webViewCallback(
519
+ WebViewCallback.sdkEvent(SdkCallbackStatus.userLocationFetchError)
520
+ );
521
+ } else {
522
+ webViewCallback(
523
+ WebViewCallback.sdkEvent(SdkCallbackStatus.userLocationFetchError)
524
+ );
525
+ }
526
+
527
+ return null;
528
+ }
529
+ }
413
530
  }
@@ -1,10 +1,11 @@
1
1
  export const Constants = {
2
-
3
- MANUFACTURER: "manufacturer",
4
- MODEL: "model",
5
- OS: "os",
6
- OS_VERSION: "os_version",
7
- APP_VERSION: "app_version",
8
- DEVICE_UUID: "device_uuid",
9
- PRIMARY_COLOR: "#3F51B5"
10
- } as const;
2
+ MANUFACTURER: 'manufacturer',
3
+ MODEL: 'model',
4
+ OS: 'os',
5
+ OS_VERSION: 'os_version',
6
+ APP_VERSION: 'app_version',
7
+ DEVICE_UUID: 'device_uuid',
8
+ PRIMARY_COLOR: '#3F51B5',
9
+ LATITUDE: 'latitude',
10
+ LONGITUDE: 'longitude',
11
+ } as const;
@@ -1,25 +1,41 @@
1
1
  export enum WebViewCallbackType {
2
-
3
- Logout = "logout",
4
- Redirect = "redirect"
2
+ Logout = 'logout',
3
+ Redirect = 'redirect',
4
+ SdkEvent = 'sdkEvent',
5
5
  }
6
6
 
7
7
  export class WebViewCallback {
8
- type: WebViewCallbackType;
9
- status?: string | null;
8
+ type: WebViewCallbackType;
9
+ status?: string | null;
10
+
11
+ private constructor(type: WebViewCallbackType, status?: string | null) {
12
+ this.type = type;
13
+ this.status = status;
14
+ }
10
15
 
11
- private constructor(type: WebViewCallbackType, status?: string | null) {
12
- this.type = type;
13
- this.status = status;
14
- }
16
+ static logout(): WebViewCallback {
17
+ return new WebViewCallback(WebViewCallbackType.Logout);
18
+ }
15
19
 
16
- static logout(): WebViewCallback {
17
- return new WebViewCallback(WebViewCallbackType.Logout);
18
- }
20
+ static redirect(status?: string | null): WebViewCallback {
21
+ return new WebViewCallback(WebViewCallbackType.Redirect, status);
22
+ }
19
23
 
20
- static redirect(status?: string | null): WebViewCallback {
21
- return new WebViewCallback(WebViewCallbackType.Redirect, status);
22
- }
24
+ static sdkEvent(status: string): WebViewCallback {
25
+ return new WebViewCallback(WebViewCallbackType.SdkEvent, status);
26
+ }
23
27
  }
24
28
 
25
- export type WebViewCallbackFunction = (callback: WebViewCallback) => void;
29
+ export type WebViewCallbackFunction = (callback: WebViewCallback) => void;
30
+
31
+ export class SdkCallbackStatus {
32
+ static readonly userLocationPermissionGranted =
33
+ 'USER_LOCATION_PERMISSION_GRANTED';
34
+ static readonly userLocationPermissionDenied =
35
+ 'USER_LOCATION_PERMISSION_DENIED';
36
+ static readonly userLocationPermissionPermanentlyDenied =
37
+ 'USER_LOCATION_PERMISSION_PERMANENTLY_DENIED';
38
+ static readonly userLocationServiceDisabled =
39
+ 'USER_LOCATION_SERVICE_DISABLED';
40
+ static readonly userLocationFetchError = 'USER_LOCATION_FETCH_ERROR';
41
+ }