banking_dcb_sdk_react_native 1.0.774-w → 2.0.0
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 +38 -119
- package/lib/module/helpers/webview.js.map +1 -1
- 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 +41 -130
- package/ios/PartnerReactNativeSdk.h +0 -6
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export declare enum WebViewCallbackType {
|
|
2
2
|
Logout = "logout",
|
|
3
|
-
Redirect = "redirect"
|
|
3
|
+
Redirect = "redirect",
|
|
4
|
+
SdkEvent = "sdkEvent"
|
|
4
5
|
}
|
|
5
6
|
export declare class WebViewCallback {
|
|
6
7
|
type: WebViewCallbackType;
|
|
@@ -8,6 +9,14 @@ export declare class WebViewCallback {
|
|
|
8
9
|
private constructor();
|
|
9
10
|
static logout(): WebViewCallback;
|
|
10
11
|
static redirect(status?: string | null): WebViewCallback;
|
|
12
|
+
static sdkEvent(status: string): WebViewCallback;
|
|
11
13
|
}
|
|
12
14
|
export type WebViewCallbackFunction = (callback: WebViewCallback) => void;
|
|
15
|
+
export declare class SdkCallbackStatus {
|
|
16
|
+
static readonly userLocationPermissionGranted = "USER_LOCATION_PERMISSION_GRANTED";
|
|
17
|
+
static readonly userLocationPermissionDenied = "USER_LOCATION_PERMISSION_DENIED";
|
|
18
|
+
static readonly userLocationPermissionPermanentlyDenied = "USER_LOCATION_PERMISSION_PERMANENTLY_DENIED";
|
|
19
|
+
static readonly userLocationServiceDisabled = "USER_LOCATION_SERVICE_DISABLED";
|
|
20
|
+
static readonly userLocationFetchError = "USER_LOCATION_FETCH_ERROR";
|
|
21
|
+
}
|
|
13
22
|
//# sourceMappingURL=webviewCallback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webviewCallback.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/utils/webviewCallback.tsx"],"names":[],"mappings":"AAAA,oBAAY,mBAAmB;
|
|
1
|
+
{"version":3,"file":"webviewCallback.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/utils/webviewCallback.tsx"],"names":[],"mappings":"AAAA,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,qBAAa,eAAe;IAC1B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAEvB,OAAO;IAKP,MAAM,CAAC,MAAM,IAAI,eAAe;IAIhC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,eAAe;IAIxD,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe;CAGjD;AAED,MAAM,MAAM,uBAAuB,GAAG,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;AAE1E,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,QAAQ,CAAC,6BAA6B,sCACR;IACrC,MAAM,CAAC,QAAQ,CAAC,4BAA4B,qCACR;IACpC,MAAM,CAAC,QAAQ,CAAC,uCAAuC,iDACP;IAChD,MAAM,CAAC,QAAQ,CAAC,2BAA2B,oCACR;IACnC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,+BAA+B;CACtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webview.d.ts","sourceRoot":"","sources":["../../../../src/helpers/webview.tsx"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAcjC,UAAU,oBAAqB,SAAQ,YAAY;IACjD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,kBAAkB,CAAC,EAAE;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AACD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAc7C;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAoCtE;
|
|
1
|
+
{"version":3,"file":"webview.d.ts","sourceRoot":"","sources":["../../../../src/helpers/webview.tsx"],"names":[],"mappings":"AAgBA,OAAO,EACL,KAAK,YAAY,EAElB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,yBAAyB,CAAC;AAcjC,UAAU,oBAAqB,SAAQ,YAAY;IACjD,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3C,kBAAkB,CAAC,EAAE;QACnB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,OAAO,CAAC;KACvB,CAAC;CACH;AACD,UAAU,kBAAkB;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,UAAU,CAAC,EAAE,uBAAuB,CAAC;IACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,KAAK,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,CAAC;AAc7C;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAoCtE;AAWD,eAAO,MAAM,OAAO,GAAI,0EAOrB,kBAAkB,4CAybpB,CAAC"}
|
package/package.json
CHANGED
|
@@ -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
|
@@ -111,18 +111,6 @@ export async function openMailAppIntent(app: MailApp): Promise<boolean> {
|
|
|
111
111
|
|
|
112
112
|
return false;
|
|
113
113
|
}
|
|
114
|
-
const isUserClosedRedirect = (url?: string | null): boolean => {
|
|
115
|
-
if (!url) return false;
|
|
116
|
-
try {
|
|
117
|
-
// Try to parse URL properly
|
|
118
|
-
const u = new URL(url);
|
|
119
|
-
if (!u.pathname.includes('/api/user/redirect')) return false;
|
|
120
|
-
return u.searchParams.get('status') === 'USER_CLOSED';
|
|
121
|
-
} catch {
|
|
122
|
-
// Fallback for relative / malformed URLs
|
|
123
|
-
return url.includes('/api/user/redirect?status=USER_CLOSED');
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
114
|
|
|
127
115
|
const clearAllCookies = async () => {
|
|
128
116
|
try {
|
|
@@ -143,8 +131,8 @@ export const WebView = ({
|
|
|
143
131
|
}: WebViewCustomProps) => {
|
|
144
132
|
const webviewRef = useRef<RNWebView | null>(null);
|
|
145
133
|
const [canGoBack, setCanGoBack] = useState(false);
|
|
146
|
-
const
|
|
147
|
-
const
|
|
134
|
+
const canGoBackRef = useRef(false);
|
|
135
|
+
const hasUserClosedRef = useRef(false);
|
|
148
136
|
|
|
149
137
|
// const [hasRedirected, setHasRedirected] = useState(false);
|
|
150
138
|
const [, setToast] = useState<{ visible: boolean; message: string } | null>(
|
|
@@ -283,20 +271,6 @@ export const WebView = ({
|
|
|
283
271
|
return true;
|
|
284
272
|
}
|
|
285
273
|
|
|
286
|
-
// 1. SPECIAL CASE: only USER_CLOSED navigation
|
|
287
|
-
if (isUserClosedRedirect(url)) {
|
|
288
|
-
console.log(
|
|
289
|
-
'SDK:LOG: USER_CLOSED redirect detected via navigation:',
|
|
290
|
-
url
|
|
291
|
-
);
|
|
292
|
-
|
|
293
|
-
StatusBar.setBackgroundColor('#7E7E7EFF');
|
|
294
|
-
clearAllCookies();
|
|
295
|
-
onCallback?.(WebViewCallback.redirect('USER_CLOSED'));
|
|
296
|
-
|
|
297
|
-
return false; // don't actually load that URL in WebView
|
|
298
|
-
}
|
|
299
|
-
|
|
300
274
|
if (Platform.OS === 'android' && url) {
|
|
301
275
|
if (url.includes('ms-outlook://')) {
|
|
302
276
|
console.log('SDK:LOG: Intent to open Outlook detected');
|
|
@@ -402,7 +376,6 @@ export const WebView = ({
|
|
|
402
376
|
);
|
|
403
377
|
|
|
404
378
|
// Cookie injection script
|
|
405
|
-
|
|
406
379
|
const injectedJavaScript = `
|
|
407
380
|
(function() {
|
|
408
381
|
function safePost(msg) {
|
|
@@ -413,13 +386,21 @@ export const WebView = ({
|
|
|
413
386
|
} catch (e) {}
|
|
414
387
|
}
|
|
415
388
|
|
|
416
|
-
//
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
389
|
+
// Preserve any existing window.onerror
|
|
390
|
+
var previousOnError = window.onerror || null;
|
|
391
|
+
window.onerror = function(message, source, lineno, colno, error) {
|
|
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) {}
|
|
400
|
+
}
|
|
401
|
+
};
|
|
421
402
|
|
|
422
|
-
//
|
|
403
|
+
// Patch history.back() to notify the app
|
|
423
404
|
if (window.history && typeof window.history.back === 'function') {
|
|
424
405
|
var originalBack = window.history.back;
|
|
425
406
|
window.history.back = function() {
|
|
@@ -430,70 +411,6 @@ export const WebView = ({
|
|
|
430
411
|
return originalBack.apply(this, arguments);
|
|
431
412
|
};
|
|
432
413
|
}
|
|
433
|
-
|
|
434
|
-
// Spy on location.assign / replace
|
|
435
|
-
try {
|
|
436
|
-
var originalAssign = window.location.assign
|
|
437
|
-
? window.location.assign.bind(window.location)
|
|
438
|
-
: null;
|
|
439
|
-
var originalReplace = window.location.replace
|
|
440
|
-
? window.location.replace.bind(window.location)
|
|
441
|
-
: null;
|
|
442
|
-
|
|
443
|
-
if (originalAssign) {
|
|
444
|
-
window.location.assign = function(url) {
|
|
445
|
-
safePost({
|
|
446
|
-
type: 'LOCATION_ASSIGN',
|
|
447
|
-
url: url,
|
|
448
|
-
from: window.location.href
|
|
449
|
-
});
|
|
450
|
-
return originalAssign(url);
|
|
451
|
-
};
|
|
452
|
-
}
|
|
453
|
-
|
|
454
|
-
if (originalReplace) {
|
|
455
|
-
window.location.replace = function(url) {
|
|
456
|
-
safePost({
|
|
457
|
-
type: 'LOCATION_REPLACE',
|
|
458
|
-
url: url,
|
|
459
|
-
from: window.location.href
|
|
460
|
-
});
|
|
461
|
-
return originalReplace(url);
|
|
462
|
-
};
|
|
463
|
-
}
|
|
464
|
-
|
|
465
|
-
// Spy on direct href writes (best-effort)
|
|
466
|
-
try {
|
|
467
|
-
var currentHref = window.location.href;
|
|
468
|
-
Object.defineProperty(window.location, 'href', {
|
|
469
|
-
get: function() {
|
|
470
|
-
return currentHref;
|
|
471
|
-
},
|
|
472
|
-
set: function(val) {
|
|
473
|
-
safePost({
|
|
474
|
-
type: 'LOCATION_HREF_SET',
|
|
475
|
-
url: val,
|
|
476
|
-
from: currentHref
|
|
477
|
-
});
|
|
478
|
-
currentHref = val;
|
|
479
|
-
if (originalAssign) {
|
|
480
|
-
return originalAssign(val);
|
|
481
|
-
}
|
|
482
|
-
}
|
|
483
|
-
});
|
|
484
|
-
} catch (e) {
|
|
485
|
-
// Some browsers/WebViews don't allow redefining href; ignore
|
|
486
|
-
safePost({
|
|
487
|
-
type: 'LOCATION_HREF_PATCH_FAILED',
|
|
488
|
-
error: String(e)
|
|
489
|
-
});
|
|
490
|
-
}
|
|
491
|
-
} catch (e) {
|
|
492
|
-
safePost({
|
|
493
|
-
type: 'LOCATION_SPY_ERROR',
|
|
494
|
-
error: String(e)
|
|
495
|
-
});
|
|
496
|
-
}
|
|
497
414
|
})();
|
|
498
415
|
true;
|
|
499
416
|
`;
|
|
@@ -562,47 +479,40 @@ export const WebView = ({
|
|
|
562
479
|
}
|
|
563
480
|
};
|
|
564
481
|
|
|
565
|
-
const setWaitingFlag = (value: boolean) => {
|
|
566
|
-
waitingForUserClosedRedirectRef.current = value;
|
|
567
|
-
setWaitingForUserClosedRedirect(value);
|
|
568
|
-
};
|
|
569
|
-
|
|
570
482
|
const handleMessage = (event: WebViewMessageEvent) => {
|
|
571
483
|
try {
|
|
572
484
|
const data = JSON.parse(event.nativeEvent.data);
|
|
573
|
-
console.log('SDK:LOG: onMessage data ='
|
|
485
|
+
console.log('SDK:LOG: onMessage data =');
|
|
574
486
|
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
break;
|
|
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);
|
|
579
490
|
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
break;
|
|
491
|
+
if (!canGoBackRef.current && !hasUserClosedRef.current) {
|
|
492
|
+
hasUserClosedRef.current = true;
|
|
583
493
|
|
|
584
|
-
case 'LOCATION_ASSIGN':
|
|
585
|
-
case 'LOCATION_REPLACE':
|
|
586
|
-
case 'LOCATION_HREF_SET':
|
|
587
494
|
console.log(
|
|
588
|
-
'SDK:LOG:'
|
|
589
|
-
data.type,
|
|
590
|
-
'from =',
|
|
591
|
-
data.from,
|
|
592
|
-
'to =',
|
|
593
|
-
data.url
|
|
495
|
+
'SDK:LOG: No WebView history. Treating HISTORY_BACK as USER_CLOSED'
|
|
594
496
|
);
|
|
595
|
-
break;
|
|
596
497
|
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
498
|
+
StatusBar.setBackgroundColor('#7E7E7EFF');
|
|
499
|
+
clearAllCookies();
|
|
500
|
+
onCallback?.(WebViewCallback.redirect('USER_CLOSED'));
|
|
501
|
+
}
|
|
502
|
+
|
|
503
|
+
return;
|
|
504
|
+
}
|
|
601
505
|
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
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;
|
|
606
516
|
}
|
|
607
517
|
} catch (e) {
|
|
608
518
|
console.warn('SDK:LOG: Error parsing WebView message', e);
|
|
@@ -646,6 +556,7 @@ export const WebView = ({
|
|
|
646
556
|
onNavigationStateChange={(navState) => {
|
|
647
557
|
console.log('SDK:LOG: NAV STATE URL:', navState.url);
|
|
648
558
|
setCanGoBack(navState.canGoBack);
|
|
559
|
+
canGoBackRef.current = navState.canGoBack;
|
|
649
560
|
}}
|
|
650
561
|
injectedJavaScript={injectedJavaScript}
|
|
651
562
|
decelerationRate={Platform.OS === 'ios' ? 'normal' : 0.9}
|