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.
- package/README.md +1 -1
- package/android/app/build/generated/source/codegen/RCTAppDependencyProvider.h +25 -0
- package/android/app/build/generated/source/codegen/RCTAppDependencyProvider.mm +55 -0
- package/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.h +18 -0
- package/android/app/build/generated/source/codegen/RCTModulesConformingToProtocolsProvider.mm +33 -0
- package/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.h +16 -0
- package/android/app/build/generated/source/codegen/RCTThirdPartyComponentsProvider.mm +62 -0
- package/android/app/build/generated/source/codegen/ReactAppDependencyProvider.podspec +34 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeAsyncStorageModuleSpec.java +59 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeBlobUtilsSpec.java +280 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeRNCWebViewModuleSpec.java +42 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeRNPermissionsSpec.java +87 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeSafeAreaContextSpec.java +65 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeScreensModuleSpec.java +35 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerDelegate.java +26 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaProviderManagerInterface.java +17 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerDelegate.java +36 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCSafeAreaViewManagerInterface.java +20 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCWebViewManagerDelegate.java +301 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNCWebViewManagerInterface.java +107 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsManagerDelegate.java +84 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsManagerInterface.java +35 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerDelegate.java +101 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSBottomTabsScreenManagerInterface.java +42 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSFullWindowOverlayManagerDelegate.java +32 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSFullWindowOverlayManagerInterface.java +17 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSModalScreenManagerDelegate.java +128 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSModalScreenManagerInterface.java +51 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSafeAreaViewManagerDelegate.java +36 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSafeAreaViewManagerInterface.java +20 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerDelegate.java +26 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContainerManagerInterface.java +17 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerDelegate.java +26 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenContentWrapperManagerInterface.java +17 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerDelegate.java +26 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenFooterManagerInterface.java +17 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenManagerDelegate.java +140 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenManagerInterface.java +55 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenNavigationContainerManagerDelegate.java +26 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenNavigationContainerManagerInterface.java +17 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerDelegate.java +121 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderConfigManagerInterface.java +48 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerDelegate.java +35 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHeaderSubviewManagerInterface.java +19 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHostManagerDelegate.java +26 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackHostManagerInterface.java +17 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackManagerDelegate.java +26 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSScreenStackManagerInterface.java +17 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSearchBarManagerDelegate.java +106 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSearchBarManagerInterface.java +40 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewHostManagerDelegate.java +57 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewHostManagerInterface.java +27 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewScreenManagerDelegate.java +32 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSSplitViewScreenManagerInterface.java +18 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSStackScreenManagerDelegate.java +35 -0
- package/android/app/build/generated/source/codegen/java/com/facebook/react/viewmanagers/RNSStackScreenManagerInterface.java +19 -0
- package/android/app/build/generated/source/codegen/jni/BankingDcbSdkReactNative-generated.cpp +22 -0
- package/android/app/build/generated/source/codegen/jni/BankingDcbSdkReactNative.h +24 -0
- package/android/app/build/generated/source/codegen/jni/CMakeLists.txt +36 -0
- package/android/app/build/generated/source/codegen/jni/RNCWebViewSpec-generated.cpp +38 -0
- package/android/app/build/generated/source/codegen/jni/RNCWebViewSpec.h +31 -0
- package/android/app/build/generated/source/codegen/jni/RNPermissionsSpec-generated.cpp +104 -0
- package/android/app/build/generated/source/codegen/jni/RNPermissionsSpec.h +31 -0
- package/android/app/build/generated/source/codegen/jni/ReactNativeBlobUtilSpec-generated.cpp +320 -0
- package/android/app/build/generated/source/codegen/jni/ReactNativeBlobUtilSpec.h +31 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/BankingDcbSdkReactNativeJSI-generated.cpp +17 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/BankingDcbSdkReactNativeJSI.h +19 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/ComponentDescriptors.cpp +22 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/ComponentDescriptors.h +24 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/EventEmitters.cpp +16 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/EventEmitters.h +17 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/Props.cpp +19 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/Props.h +18 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/ShadowNodes.cpp +17 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/ShadowNodes.h +23 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/States.cpp +16 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/BankingDcbSdkReactNative/States.h +19 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ComponentDescriptors.cpp +22 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ComponentDescriptors.h +24 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/EventEmitters.cpp +258 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/EventEmitters.h +277 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/Props.cpp +101 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/Props.h +507 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/RNCWebViewSpecJSI-generated.cpp +35 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/RNCWebViewSpecJSI.h +80 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ShadowNodes.cpp +17 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/ShadowNodes.h +32 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/States.cpp +16 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNCWebViewSpec/States.h +29 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNPermissionsSpec/RNPermissionsSpecJSI-generated.cpp +106 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/RNPermissionsSpec/RNPermissionsSpecJSI.h +226 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpecJSI-generated.cpp +449 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/ReactNativeBlobUtilSpec/ReactNativeBlobUtilSpecJSI.h +503 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnasyncstorage/rnasyncstorageJSI-generated.cpp +72 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnasyncstorage/rnasyncstorageJSI.h +116 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ComponentDescriptors.cpp +31 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ComponentDescriptors.h +33 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/EventEmitters.cpp +499 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/EventEmitters.h +422 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/Props.cpp +307 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/Props.h +1391 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ShadowNodes.cpp +26 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/ShadowNodes.h +131 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/States.cpp +16 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/States.h +137 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/rnscreensJSI-generated.cpp +22 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/rnscreens/rnscreensJSI.h +64 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ComponentDescriptors.cpp +22 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ComponentDescriptors.h +24 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/EventEmitters.cpp +40 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/EventEmitters.h +47 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/Props.cpp +33 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/Props.h +85 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ShadowNodes.cpp +17 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/ShadowNodes.h +32 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/States.cpp +16 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/States.h +29 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/safeareacontextJSI-generated.cpp +26 -0
- package/android/app/build/generated/source/codegen/jni/react/renderer/components/safeareacontext/safeareacontextJSI.h +71 -0
- package/android/app/build/generated/source/codegen/jni/rnasyncstorage-generated.cpp +62 -0
- package/android/app/build/generated/source/codegen/jni/rnasyncstorage.h +31 -0
- package/android/app/build/generated/source/codegen/jni/rnscreens-generated.cpp +29 -0
- package/android/app/build/generated/source/codegen/jni/rnscreens.h +31 -0
- package/android/app/build/generated/source/codegen/jni/safeareacontext-generated.cpp +32 -0
- package/android/app/build/generated/source/codegen/jni/safeareacontext.h +31 -0
- package/android/build.gradle +5 -5
- package/android/gradle.properties +5 -5
- package/android/src/main/AndroidManifest.xml +2 -2
- package/android/src/main/java/com/{partnerreactnativesdk/PartnerReactNativeSdkModule.kt → bankingdcbsdkreactnative/BankingDcbSdkReactNativeModule.kt} +3 -3
- package/android/src/main/java/com/{partnerreactnativesdk/PartnerReactNativeSdkPackage.kt → bankingdcbsdkreactnative/BankingDcbSdkReactNativePackage.kt} +3 -3
- package/ios/BankingDcbSdkReactNative.h +6 -0
- package/ios/PartnerReactNativeSdk.mm +3 -3
- package/lib/module/helpers/banking_dcb_react_native.js +121 -13
- package/lib/module/helpers/banking_dcb_react_native.js.map +1 -1
- package/lib/module/helpers/utils/Constants.js +10 -7
- package/lib/module/helpers/utils/Constants.js.map +1 -1
- package/lib/module/helpers/utils/webviewCallback.js +11 -0
- package/lib/module/helpers/utils/webviewCallback.js.map +1 -1
- package/lib/module/helpers/webview.js +61 -22
- package/lib/module/helpers/webview.js.map +1 -1
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/helpers/banking_dcb_react_native.d.ts +1 -2
- package/lib/typescript/src/helpers/banking_dcb_react_native.d.ts.map +1 -1
- package/lib/typescript/src/helpers/utils/Constants.d.ts +3 -0
- package/lib/typescript/src/helpers/utils/Constants.d.ts.map +1 -1
- package/lib/typescript/src/helpers/utils/webviewCallback.d.ts +10 -1
- package/lib/typescript/src/helpers/utils/webviewCallback.d.ts.map +1 -1
- package/lib/typescript/src/helpers/webview.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/helpers/banking_dcb_react_native.tsx +138 -20
- package/src/helpers/utils/Constants.tsx +11 -9
- package/src/helpers/utils/webviewCallback.tsx +32 -16
- package/src/helpers/webview.tsx +71 -30
- 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 {
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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],
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
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
|
-
|
|
4
|
-
|
|
2
|
+
Logout = 'logout',
|
|
3
|
+
Redirect = 'redirect',
|
|
4
|
+
SdkEvent = 'sdkEvent',
|
|
5
5
|
}
|
|
6
6
|
|
|
7
7
|
export class WebViewCallback {
|
|
8
|
-
|
|
9
|
-
|
|
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
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
16
|
+
static logout(): WebViewCallback {
|
|
17
|
+
return new WebViewCallback(WebViewCallbackType.Logout);
|
|
18
|
+
}
|
|
15
19
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
20
|
+
static redirect(status?: string | null): WebViewCallback {
|
|
21
|
+
return new WebViewCallback(WebViewCallbackType.Redirect, status);
|
|
22
|
+
}
|
|
19
23
|
|
|
20
|
-
|
|
21
|
-
|
|
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
|
+
}
|
package/src/helpers/webview.tsx
CHANGED
|
@@ -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
|
|
135
|
-
|
|
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
|
-
|
|
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
|
-
|
|
398
|
-
|
|
399
|
-
|
|
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
|
-
|
|
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
|
-
|
|
475
|
-
|
|
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
|
-
|
|
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}
|