banking_dcb_sdk_react_native 1.0.77 → 1.0.91-beta

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 (154) hide show
  1. package/README.md +1 -1
  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/android/build.gradle +5 -5
  127. package/android/gradle.properties +5 -5
  128. package/android/src/main/AndroidManifest.xml +2 -2
  129. package/android/src/main/java/com/{partnerreactnativesdk/PartnerReactNativeSdkModule.kt → bankingdcbsdkreactnative/BankingDcbSdkReactNativeModule.kt} +3 -3
  130. package/android/src/main/java/com/{partnerreactnativesdk/PartnerReactNativeSdkPackage.kt → bankingdcbsdkreactnative/BankingDcbSdkReactNativePackage.kt} +3 -3
  131. package/ios/BankingDcbSdkReactNative.h +6 -0
  132. package/ios/PartnerReactNativeSdk.mm +3 -3
  133. package/lib/module/helpers/banking_dcb_react_native.js +121 -13
  134. package/lib/module/helpers/banking_dcb_react_native.js.map +1 -1
  135. package/lib/module/helpers/utils/Constants.js +10 -7
  136. package/lib/module/helpers/utils/Constants.js.map +1 -1
  137. package/lib/module/helpers/utils/webviewCallback.js +11 -0
  138. package/lib/module/helpers/utils/webviewCallback.js.map +1 -1
  139. package/lib/module/helpers/webview.js +61 -22
  140. package/lib/module/helpers/webview.js.map +1 -1
  141. package/lib/typescript/package.json +1 -0
  142. package/lib/typescript/src/helpers/banking_dcb_react_native.d.ts +1 -2
  143. package/lib/typescript/src/helpers/banking_dcb_react_native.d.ts.map +1 -1
  144. package/lib/typescript/src/helpers/utils/Constants.d.ts +3 -0
  145. package/lib/typescript/src/helpers/utils/Constants.d.ts.map +1 -1
  146. package/lib/typescript/src/helpers/utils/webviewCallback.d.ts +10 -1
  147. package/lib/typescript/src/helpers/utils/webviewCallback.d.ts.map +1 -1
  148. package/lib/typescript/src/helpers/webview.d.ts.map +1 -1
  149. package/package.json +1 -1
  150. package/src/helpers/banking_dcb_react_native.tsx +138 -20
  151. package/src/helpers/utils/Constants.tsx +11 -9
  152. package/src/helpers/utils/webviewCallback.tsx +32 -16
  153. package/src/helpers/webview.tsx +71 -30
  154. package/ios/PartnerReactNativeSdk.h +0 -6
@@ -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,22 +228,38 @@ export class BankingDcbReactNative {
219
228
  console.log('App Version:', appVersion);
220
229
  }
221
230
  console.log('SDK:LOG device uuid is ');
222
-
231
+ // const position = await this._getCurrentLocationIfPossible(
232
+ // BankingDcbReactNative.webViewCallback
233
+ // );
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
+ // [Constants.ACCURACY]: String(position.accuracy),
253
+ };
254
+ console.log('SDK:LOG: body for device session is : ', body);
223
255
  const response = await this._apiCall.callAPI(
224
256
  'POST',
225
257
  ServiceNames.DEVICE_SESSION.params({ partner: bank }),
226
258
  {
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
- },
259
+ body,
235
260
  }
236
261
  );
237
- //console.log("response from setup device session is : ", response)
262
+ console.log('response from setup device session is : ', response);
238
263
  if (
239
264
  response &&
240
265
  response.data &&
@@ -380,7 +405,7 @@ export class BankingDcbReactNative {
380
405
  [Constants.MANUFACTURER]: deviceInfo[Constants.MANUFACTURER],
381
406
  [Constants.MODEL]: deviceInfo[Constants.MODEL],
382
407
  [Constants.DEVICE_UUID]: deviceInfo[Constants.DEVICE_UUID],
383
- [Constants.OS]: deviceInfo[Constants.OS], // "Android"/"iOS" from your manager
408
+ [Constants.OS]: deviceInfo[Constants.OS],
384
409
  [Constants.OS_VERSION]: deviceInfo[Constants.OS_VERSION],
385
410
  [Constants.APP_VERSION]: appVersion,
386
411
  },
@@ -410,4 +435,97 @@ export class BankingDcbReactNative {
410
435
  };
411
436
  }
412
437
  }
438
+
439
+ // private async _getCurrentLocationIfPossible(
440
+ // webViewCallback: WebViewCallbackFunction
441
+ // ): Promise<Location | null> {
442
+ // try {
443
+ // console.log('SDK:LOG: in get current location');
444
+
445
+ // if (Platform.OS === 'android') {
446
+ // const hasFineLocation = await PermissionsAndroid.check(
447
+ // PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION
448
+ // );
449
+
450
+ // let result: string;
451
+
452
+ // if (!hasFineLocation) {
453
+ // result = await PermissionsAndroid.request(
454
+ // PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION
455
+ // );
456
+ // } else {
457
+ // result = PermissionsAndroid.RESULTS.GRANTED;
458
+ // }
459
+
460
+ // console.log('SDK:LOG: ANDROID LOCATION PERMISSION RESULT =>', result);
461
+
462
+ // if (result === PermissionsAndroid.RESULTS.DENIED) {
463
+ // webViewCallback(
464
+ // WebViewCallback.sdkEvent(
465
+ // SdkCallbackStatus.userLocationPermissionDenied
466
+ // )
467
+ // );
468
+ // return null;
469
+ // }
470
+
471
+ // if (result === PermissionsAndroid.RESULTS.NEVER_ASK_AGAIN) {
472
+ // ToastAndroid.show(
473
+ // 'Location permission denied. Please enable it from Settings.',
474
+ // ToastAndroid.LONG
475
+ // );
476
+ // webViewCallback(
477
+ // WebViewCallback.sdkEvent(
478
+ // SdkCallbackStatus.userLocationPermissionPermanentlyDenied
479
+ // )
480
+ // );
481
+ // return null;
482
+ // }
483
+ // }
484
+
485
+ // const location = await GetLocation.getCurrentPosition({
486
+ // enableHighAccuracy: true,
487
+ // timeout: 15000,
488
+ // });
489
+
490
+ // console.log('SDK:LOG: 📍 Got position via GetLocation:', {
491
+ // latitude: location.latitude,
492
+ // longitude: location.longitude,
493
+ // accuracy: location.accuracy,
494
+ // time: location.time,
495
+ // });
496
+
497
+ // return location;
498
+ // } catch (error: any) {
499
+ // console.log(
500
+ // 'SDK:LOG: Error while fetching location (GetLocation):',
501
+ // error
502
+ // );
503
+
504
+ // const code = error?.code as string | undefined;
505
+
506
+ // if (code === 'UNAUTHORIZED') {
507
+ // webViewCallback(
508
+ // WebViewCallback.sdkEvent(
509
+ // SdkCallbackStatus.userLocationPermissionDenied
510
+ // )
511
+ // );
512
+ // } else if (code === 'UNAVAILABLE') {
513
+ // webViewCallback(
514
+ // WebViewCallback.sdkEvent(
515
+ // SdkCallbackStatus.userLocationServiceDisabled
516
+ // )
517
+ // );
518
+ // } else if (code === 'TIMEOUT') {
519
+ // webViewCallback(
520
+ // WebViewCallback.sdkEvent(SdkCallbackStatus.userLocationFetchError)
521
+ // );
522
+ // } else {
523
+ // webViewCallback(
524
+ // WebViewCallback.sdkEvent(SdkCallbackStatus.userLocationFetchError)
525
+ // );
526
+ // }
527
+
528
+ // return null;
529
+ // }
530
+ // }
413
531
  }
@@ -1,10 +1,12 @@
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
+ ACCURACY: 'accuracy',
12
+ } 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
+ }
@@ -131,8 +131,9 @@ export const WebView = ({
131
131
  }: WebViewCustomProps) => {
132
132
  const webviewRef = useRef<RNWebView | null>(null);
133
133
  const [canGoBack, setCanGoBack] = useState(false);
134
- const [waitingForUserClosedRedirect, setWaitingForUserClosedRedirect] =
135
- useState(false);
134
+ const canGoBackRef = useRef(false);
135
+ const hasUserClosedRef = useRef(false);
136
+
136
137
  // const [hasRedirected, setHasRedirected] = useState(false);
137
138
  const [, setToast] = useState<{ visible: boolean; message: string } | null>(
138
139
  null
@@ -265,27 +266,11 @@ export const WebView = ({
265
266
  const handleOnShouldStartLoadWithRequest = (event: WebViewNavigation) => {
266
267
  const { url } = event;
267
268
  console.log('SDK:LOG: WEBVIEW URL:', url);
268
- if (url === 'about:blank' || url === 'about:srcdoc') {
269
+
270
+ if (!url || url === 'about:blank' || url === 'about:srcdoc') {
269
271
  return true;
270
272
  }
271
- if (
272
- waitingForUserClosedRedirect &&
273
- (url?.includes('/session-expired?status=') ||
274
- url?.includes('/redirect?status=') ||
275
- url?.includes('/api/user/redirect'))
276
- ) {
277
- console.log('SDK:LOG: waitingForUserClosedRedirect overriding url');
278
- const status = getQueryParam(url, 'status');
279
273
 
280
- setWaitingForUserClosedRedirect(false);
281
-
282
- console.log('SDK:LOG: Status thrown from webview ', status);
283
-
284
- StatusBar.setBackgroundColor('#7E7E7EFF');
285
- clearAllCookies();
286
- onCallback?.(WebViewCallback.redirect(status ?? 'USER_CLOSED'));
287
- return false;
288
- }
289
274
  if (Platform.OS === 'android' && url) {
290
275
  if (url.includes('ms-outlook://')) {
291
276
  console.log('SDK:LOG: Intent to open Outlook detected');
@@ -391,17 +376,44 @@ export const WebView = ({
391
376
  );
392
377
 
393
378
  // Cookie injection script
394
-
395
379
  const injectedJavaScript = `
380
+ (function() {
381
+ function safePost(msg) {
382
+ try {
383
+ if (window.ReactNativeWebView) {
384
+ window.ReactNativeWebView.postMessage(JSON.stringify(msg));
385
+ }
386
+ } catch (e) {}
387
+ }
388
+
389
+ // Preserve any existing window.onerror
390
+ var previousOnError = window.onerror || null;
396
391
  window.onerror = function(message, source, lineno, colno, error) {
397
- if (message.includes('RATE_LIMIT_USER')) {
398
- window.ReactNativeWebView.postMessage(JSON.stringify({
399
- type: 'RATE_LIMIT_ERROR'
400
- }));
392
+ try {
393
+ if (String(message || '').indexOf('RATE_LIMIT_USER') !== -1 &&
394
+ window.ReactNativeWebView) {
395
+ safePost({ type: 'RATE_LIMIT_ERROR' });
396
+ }
397
+ } catch (e) {}
398
+ if (typeof previousOnError === 'function') {
399
+ try { return previousOnError.apply(this, arguments); } catch (e) {}
401
400
  }
402
401
  };
403
- true;
404
- `;
402
+
403
+ // Patch history.back() to notify the app
404
+ if (window.history && typeof window.history.back === 'function') {
405
+ var originalBack = window.history.back;
406
+ window.history.back = function() {
407
+ safePost({
408
+ type: 'HISTORY_BACK_CALLED',
409
+ href: window.location.href
410
+ });
411
+ return originalBack.apply(this, arguments);
412
+ };
413
+ }
414
+ })();
415
+ true;
416
+ `;
405
417
 
406
418
  const requestPermission = async (permission: Permission) => {
407
419
  try {
@@ -470,16 +482,43 @@ export const WebView = ({
470
482
  const handleMessage = (event: WebViewMessageEvent) => {
471
483
  try {
472
484
  const data = JSON.parse(event.nativeEvent.data);
485
+ console.log('SDK:LOG: onMessage data =');
486
+
487
+ // 1) history.back() from a "root" page → treat as USER_CLOSED
488
+ if (data?.type === 'HISTORY_BACK_CALLED') {
489
+ console.log('SDK:LOG: HISTORY_BACK_CALLED at', data.href);
473
490
 
474
- if (data?.method === 'CLOSE_CLICKED') {
475
- console.log('SDK:LOG: Received CLOSE_CLICKED from web');
491
+ if (!canGoBackRef.current && !hasUserClosedRef.current) {
492
+ hasUserClosedRef.current = true;
493
+
494
+ console.log(
495
+ 'SDK:LOG: No WebView history. Treating HISTORY_BACK as USER_CLOSED'
496
+ );
476
497
 
477
- setWaitingForUserClosedRedirect(true);
498
+ StatusBar.setBackgroundColor('#7E7E7EFF');
499
+ clearAllCookies();
500
+ onCallback?.(WebViewCallback.redirect('USER_CLOSED'));
501
+ }
502
+
503
+ return;
504
+ }
505
+
506
+ if (data?.type === 'RATE_LIMIT_ERROR') {
507
+ console.log('SDK:LOG: RATE_LIMIT_ERROR received from web');
508
+ ToastAndroid.show(
509
+ 'Too many requests. Please try after 1 minute',
510
+ ToastAndroid.LONG
511
+ );
512
+ // StatusBar.setBackgroundColor('#7E7E7EFF');
513
+ // clearAllCookies();
514
+ // onCallback?.(WebViewCallback.redirect('RATE_LIMIT_ERROR'));
515
+ // return;
478
516
  }
479
517
  } catch (e) {
480
518
  console.warn('SDK:LOG: Error parsing WebView message', e);
481
519
  }
482
520
  };
521
+
483
522
  const handleWebViewLoadEnd = (syntheticEvent: any) => {
484
523
  const loadedUrl = syntheticEvent?.nativeEvent?.url || url;
485
524
 
@@ -515,7 +554,9 @@ export const WebView = ({
515
554
  allowsInlineMediaPlayback={true}
516
555
  onShouldStartLoadWithRequest={handleOnShouldStartLoadWithRequest}
517
556
  onNavigationStateChange={(navState) => {
557
+ console.log('SDK:LOG: NAV STATE URL:', navState.url);
518
558
  setCanGoBack(navState.canGoBack);
559
+ canGoBackRef.current = navState.canGoBack;
519
560
  }}
520
561
  injectedJavaScript={injectedJavaScript}
521
562
  decelerationRate={Platform.OS === 'ios' ? 'normal' : 0.9}
@@ -1,6 +0,0 @@
1
-
2
- #import <PartnerReactNativeSdk/RNPartnerReactNativeSdkSpec.h>
3
-
4
- @interface PartnerReactNativeSdk : NSObject <NativePartnerReactNativeSdkSpec>
5
-
6
- @end