@deuna/react-native-sdk 1.0.0 → 1.0.1
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/lib/module/DeunaSDK.js +18 -11
- package/lib/module/DeunaSDK.js.map +1 -1
- package/lib/module/components/DeunaWebView.js +2 -1
- package/lib/module/components/DeunaWebView.js.map +1 -1
- package/lib/module/components/DeunaWidget.js +4 -2
- package/lib/module/components/DeunaWidget.js.map +1 -1
- package/lib/module/components/NewTabWebView.js +2 -1
- package/lib/module/components/NewTabWebView.js.map +1 -1
- package/lib/module/controllers/BaseWebViewController.js +55 -13
- package/lib/module/controllers/BaseWebViewController.js.map +1 -1
- package/lib/module/controllers/OpenInNewTabController.js +21 -5
- package/lib/module/controllers/OpenInNewTabController.js.map +1 -1
- package/lib/module/types/helpers/buildElementsLink.js +71 -54
- package/lib/module/types/helpers/buildElementsLink.js.map +1 -1
- package/lib/module/types/helpers/buildNextActionLink.js +7 -2
- package/lib/module/types/helpers/buildNextActionLink.js.map +1 -1
- package/lib/module/types/helpers/buildPaymentLink.js +1 -2
- package/lib/module/types/helpers/buildPaymentLink.js.map +1 -1
- package/lib/module/types/helpers/buildVoucherLink.js +1 -2
- package/lib/module/types/helpers/buildVoucherLink.js.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWebView.d.ts +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWebView.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWidget.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts +24 -1
- package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts +1 -0
- package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/base.d.ts +2 -2
- package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildElementsLink.d.ts +6 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildElementsLink.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildNextActionLink.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildPaymentLink.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildVoucherLink.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/DeunaSDK.ts +17 -11
- package/src/components/DeunaWebView.tsx +2 -0
- package/src/components/DeunaWidget.tsx +7 -0
- package/src/components/NewTabWebView.tsx +3 -0
- package/src/controllers/BaseWebViewController.ts +70 -13
- package/src/controllers/OpenInNewTabController.ts +26 -8
- package/src/types/helpers/buildElementsLink.ts +102 -66
- package/src/types/helpers/buildNextActionLink.ts +8 -3
- package/src/types/helpers/buildPaymentLink.ts +1 -3
- package/src/types/helpers/buildVoucherLink.ts +1 -3
|
@@ -40,8 +40,7 @@ export const buildVoucherLink = config => {
|
|
|
40
40
|
|
|
41
41
|
//encode to base64
|
|
42
42
|
searchParams.append("xpropsB64", btoa(JSON.stringify(xpropsB64)));
|
|
43
|
-
const url = new URL(baseUrl);
|
|
44
|
-
url.pathname = `/voucher`;
|
|
43
|
+
const url = new URL("/voucher", baseUrl);
|
|
45
44
|
url.search = searchParams.toString();
|
|
46
45
|
return url.toString();
|
|
47
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getIntegrationType","urls","production","sandbox","staging","develop","buildVoucherLink","config","env","orderToken","baseUrl","searchParams","URLSearchParams","mode","int","language","xpropsB64","id","cdl","sessionId","domain","append","btoa","JSON","stringify","url","URL","
|
|
1
|
+
{"version":3,"names":["getIntegrationType","urls","production","sandbox","staging","develop","buildVoucherLink","config","env","orderToken","baseUrl","searchParams","URLSearchParams","mode","int","language","xpropsB64","id","cdl","sessionId","domain","append","btoa","JSON","stringify","url","URL","search","toString"],"sourceRoot":"../../../../src","sources":["types/helpers/buildVoucherLink.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;;AAGA,SAASA,kBAAkB,QAAmB,gBAAa;AAE3D,MAAMC,IAAiC,GAAG;EACxCC,UAAU,EAAE,sBAAsB;EAClCC,OAAO,EAAE,8BAA8B;EACvCC,OAAO,EAAE,2BAA2B;EACpCC,OAAO,EAAE;AACX,CAAC;AAED,OAAO,MAAMC,gBAAgB,GAAIC,MAAiB,IAAa;EAC7D,MAAM;IAAEC,GAAG;IAAEC;EAAW,CAAC,GAAGF,MAAM;EAElC,IAAIG,OAAO,GAAGT,IAAI,CAACC,UAAU;EAE7B,IAAIM,GAAG,EAAE;IACPE,OAAO,GAAGT,IAAI,CAACO,GAAG,CAAC;EACrB;EAEA,MAAMG,YAAY,GAAG,IAAIC,eAAe,CAAC;IACvCC,IAAI,EAAE,QAAQ;IACdC,GAAG,EAAEd,kBAAkB,CAACO,MAAM,CAACM,IAAI,CAAC;IACpCE,QAAQ,EAAER,MAAM,CAACQ,QAAQ;IACzBN;EACF,CAAC,CAAC;EAEF,MAAMO,SAAS,GAAG;IAChBC,EAAE,EAAEV,MAAM,CAACU,EAAE;IACbC,GAAG,EAAE;MACHC,SAAS,EAAEZ,MAAM,CAACY;IACpB;EACF,CAAC;EAED,IAAIZ,MAAM,CAACa,MAAM,EAAE;IACjBV,OAAO,GAAGH,MAAM,CAACa,MAAM;EACzB;;EAEA;EACAT,YAAY,CAACU,MAAM,CAAC,WAAW,EAAEC,IAAI,CAACC,IAAI,CAACC,SAAS,CAACR,SAAS,CAAC,CAAC,CAAC;EAEjE,MAAMS,GAAG,GAAG,IAAIC,GAAG,CAAC,UAAU,EAAEhB,OAAO,CAAC;EACxCe,GAAG,CAACE,MAAM,GAAGhB,YAAY,CAACiB,QAAQ,CAAC,CAAC;EAEpC,OAAOH,GAAG,CAACG,QAAQ,CAAC,CAAC;AACvB,CAAC","ignoreList":[]}
|
|
@@ -76,6 +76,7 @@ export declare class DeunaSDK extends BaseDeuna {
|
|
|
76
76
|
addListener: (listener: () => void) => void;
|
|
77
77
|
removeListener: (listener: () => void) => void;
|
|
78
78
|
notifyListeners: () => void;
|
|
79
|
+
private notifyDownloadFile;
|
|
79
80
|
onCloseNewTab: () => void;
|
|
80
81
|
/**
|
|
81
82
|
* Builds the delegate for the DEUNA widget to listen to the events
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeunaSDK.d.ts","sourceRoot":"","sources":["../../../../src/DeunaSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,gBAAgB,EAChB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,OAAO,EACP,IAAI,EACJ,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,KAAK,EACL,MAAM,EACN,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,OAAO,
|
|
1
|
+
{"version":3,"file":"DeunaSDK.d.ts","sourceRoot":"","sources":["../../../../src/DeunaSDK.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,7 @@ interface DeunaWebViewProps {
|
|
|
5
5
|
onMessage?: (event: any) => void;
|
|
6
6
|
onLoad?: () => void;
|
|
7
7
|
onError?: (error: any) => void;
|
|
8
|
+
onShouldStartLoadWithRequest?: (request: any) => boolean;
|
|
8
9
|
}
|
|
9
10
|
export declare const DeunaWebView: (props: DeunaWebViewProps) => import("react/jsx-runtime").JSX.Element;
|
|
10
11
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeunaWebView.d.ts","sourceRoot":"","sources":["../../../../../src/components/DeunaWebView.tsx"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAG3C,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"DeunaWebView.d.ts","sourceRoot":"","sources":["../../../../../src/components/DeunaWebView.tsx"],"names":[],"mappings":"AACA,OAAO,OAAO,MAAM,sBAAsB,CAAC;AAG3C,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACvC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,4BAA4B,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC;CAC1D;AAED,eAAO,MAAM,YAAY,GAAI,OAAO,iBAAiB,4CAwBpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeunaWidget.d.ts","sourceRoot":"","sources":["../../../../../src/components/DeunaWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAMvC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,
|
|
1
|
+
{"version":3,"file":"DeunaWidget.d.ts","sourceRoot":"","sources":["../../../../../src/components/DeunaWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAMvC,UAAU,gBAAgB;IACxB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,GAAI,OAAO,gBAAgB,4CAmFlD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NewTabWebView.d.ts","sourceRoot":"","sources":["../../../../../src/components/NewTabWebView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,
|
|
1
|
+
{"version":3,"file":"NewTabWebView.d.ts","sourceRoot":"","sources":["../../../../../src/components/NewTabWebView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,4CAoDtD,CAAC"}
|
|
@@ -1,19 +1,25 @@
|
|
|
1
1
|
import type WebView from 'react-native-webview';
|
|
2
2
|
import { WebViewMessageEvent } from 'react-native-webview';
|
|
3
3
|
import { ClosedAction, CustomStyles, Json, State, SubmitResult } from '../types';
|
|
4
|
+
import { ShouldStartLoadRequest } from 'react-native-webview/lib/WebViewTypes';
|
|
4
5
|
export interface WebViewDelegate {
|
|
5
6
|
onOpenInNewTab?: (url: string) => void;
|
|
6
7
|
onCloseButtonPressed?: () => void;
|
|
7
8
|
onCloseSubWebView?: () => void;
|
|
9
|
+
onFileDownload?: (url: string) => void;
|
|
10
|
+
onNewTabWindowClose?: () => void;
|
|
8
11
|
}
|
|
9
12
|
export declare enum WebViewEventType {
|
|
10
13
|
consoleLog = "consoleLog",
|
|
11
14
|
eventDispatch = "eventDispatch",
|
|
12
15
|
jsExecutor = "jsExecutor",
|
|
13
16
|
openInNewTab = "openInNewTab",
|
|
14
|
-
redirect = "redirect"
|
|
17
|
+
redirect = "redirect",
|
|
18
|
+
newTabWindowClose = "newTabWindowClose"
|
|
15
19
|
}
|
|
16
20
|
export declare abstract class BaseWebViewController {
|
|
21
|
+
initialized: boolean;
|
|
22
|
+
redirectUrl: string | null;
|
|
17
23
|
webView: WebView | null;
|
|
18
24
|
url: string | null;
|
|
19
25
|
delegate: WebViewDelegate | null;
|
|
@@ -27,6 +33,22 @@ export declare abstract class BaseWebViewController {
|
|
|
27
33
|
* Called when the web view fails to load a URL
|
|
28
34
|
*/
|
|
29
35
|
abstract onError: (event: any) => void;
|
|
36
|
+
/**
|
|
37
|
+
* Called when the web view should load a URL in the same web view
|
|
38
|
+
*/
|
|
39
|
+
abstract urlMustBeLoadedInTheSameWebView: (url: string) => boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Checks if the URL is a download URL
|
|
42
|
+
* @param url - The URL to check
|
|
43
|
+
* @returns True if the URL is a download URL, false otherwise
|
|
44
|
+
*/
|
|
45
|
+
isDownloadUrl: (url: string) => boolean;
|
|
46
|
+
/**
|
|
47
|
+
* Determines if a URL should be loaded in the current WebView or opened in a new tab
|
|
48
|
+
* @param request The navigation request details
|
|
49
|
+
* @returns boolean indicating if the URL should be loaded in current WebView
|
|
50
|
+
*/
|
|
51
|
+
onShouldStartLoadWithRequest: (request: ShouldStartLoadRequest) => boolean;
|
|
30
52
|
/**
|
|
31
53
|
* Release the web view resources
|
|
32
54
|
*/
|
|
@@ -40,6 +62,7 @@ export declare abstract class DeunaWebViewController extends BaseWebViewControll
|
|
|
40
62
|
abstract onEventDispatch: (event: Record<string, any>) => void;
|
|
41
63
|
setWebView: (webView: WebView) => void;
|
|
42
64
|
onLoad: () => void;
|
|
65
|
+
urlMustBeLoadedInTheSameWebView: (url: string) => boolean;
|
|
43
66
|
onMessage: (event: WebViewMessageEvent) => void;
|
|
44
67
|
setXprops: () => void;
|
|
45
68
|
/**
|
package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BaseWebViewController.d.ts","sourceRoot":"","sources":["../../../../../src/controllers/BaseWebViewController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,IAAI,EACJ,KAAK,EACL,YAAY,EACb,MAAM,UAAU,CAAC;AAGlB,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"BaseWebViewController.d.ts","sourceRoot":"","sources":["../../../../../src/controllers/BaseWebViewController.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@ export declare class OpenInNewTabController extends BaseWebViewController {
|
|
|
6
6
|
setWebView: (webView: WebView) => void;
|
|
7
7
|
onLoad: () => void;
|
|
8
8
|
onError: (event: any) => void;
|
|
9
|
+
urlMustBeLoadedInTheSameWebView: (url: string) => boolean;
|
|
9
10
|
onMessage: (event: WebViewMessageEvent) => void;
|
|
10
11
|
setXprops: () => void;
|
|
11
12
|
}
|
package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenInNewTabController.d.ts","sourceRoot":"","sources":["../../../../../src/controllers/OpenInNewTabController.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"OpenInNewTabController.d.ts","sourceRoot":"","sources":["../../../../../src/controllers/OpenInNewTabController.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,EAAE,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EACL,qBAAqB,EAEtB,MAAM,yBAAyB,CAAC;AAGjC,qBAAa,sBAAuB,SAAQ,qBAAqB;IACnD,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;IAKhC,UAAU,GAAI,SAAS,OAAO,UAE5B;IAEF,MAAM,aAEJ;IAEF,OAAO,GAAI,OAAO,GAAG,UAEnB;IAEF,+BAA+B,GAAI,KAAK,MAAM,aAM5C;IAEF,SAAS,GAAI,OAAO,mBAAmB,UAKrC;IAEF,SAAS,aAeP;CACH"}
|
|
@@ -73,7 +73,7 @@ export declare abstract class BaseDeuna {
|
|
|
73
73
|
abstract close(): Promise<void>;
|
|
74
74
|
setCustomStyles(customStyles: CustomStyles): Promise<void>;
|
|
75
75
|
refetchOrder(): Promise<Order | null>;
|
|
76
|
-
getWidgetState(): Promise<State
|
|
76
|
+
getWidgetState(): Promise<State>;
|
|
77
77
|
isValid(): Promise<boolean>;
|
|
78
78
|
getSelectedPaymentMethod(): Promise<{
|
|
79
79
|
method_type: PaymentMethodTypes;
|
|
@@ -82,7 +82,7 @@ export declare abstract class BaseDeuna {
|
|
|
82
82
|
express?: boolean;
|
|
83
83
|
flowType?: PaymentMethodConfigurationFlow;
|
|
84
84
|
};
|
|
85
|
-
}
|
|
85
|
+
}>;
|
|
86
86
|
abstract initPaymentWidget(params: InitPaymentWidgetParams): Promise<void>;
|
|
87
87
|
abstract initElements(params: InitElementsWidgetParams): Promise<void>;
|
|
88
88
|
abstract initNextAction(params: InitNextActionWidgetParams): Promise<void>;
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
-
import { UrlConfig } from
|
|
1
|
+
import { UrlConfig } from './urlConfig';
|
|
2
|
+
/**
|
|
3
|
+
* Builds a complete Elements widget URL with all necessary parameters
|
|
4
|
+
* @param config - Configuration object for building the Elements URL
|
|
5
|
+
* @returns The complete Elements widget URL as a string
|
|
6
|
+
*/
|
|
2
7
|
export declare const buildElementsLink: (config: UrlConfig) => string;
|
|
3
8
|
//# sourceMappingURL=buildElementsLink.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildElementsLink.d.ts","sourceRoot":"","sources":["../../../../../../src/types/helpers/buildElementsLink.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"buildElementsLink.d.ts","sourceRoot":"","sources":["../../../../../../src/types/helpers/buildElementsLink.ts"],"names":[],"mappings":"AAEA,OAAO,EAAsB,SAAS,EAAE,MAAM,aAAa,CAAC;AA6F5D;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,GAAI,QAAQ,SAAS,KAAG,MAsBrD,CAAC"}
|
package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildNextActionLink.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildNextActionLink.d.ts","sourceRoot":"","sources":["../../../../../../src/types/helpers/buildNextActionLink.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,SAAS,EACV,MAAM,aAAa,CAAC;AASrB,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,KAAG,
|
|
1
|
+
{"version":3,"file":"buildNextActionLink.d.ts","sourceRoot":"","sources":["../../../../../../src/types/helpers/buildNextActionLink.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,SAAS,EACV,MAAM,aAAa,CAAC;AASrB,eAAO,MAAM,mBAAmB,GAAI,QAAQ,SAAS,KAAG,MAgCvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildPaymentLink.d.ts","sourceRoot":"","sources":["../../../../../../src/types/helpers/buildPaymentLink.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAGL,SAAS,EACV,MAAM,aAAa,CAAC;AASrB,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,KAAG,
|
|
1
|
+
{"version":3,"file":"buildPaymentLink.d.ts","sourceRoot":"","sources":["../../../../../../src/types/helpers/buildPaymentLink.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAGL,SAAS,EACV,MAAM,aAAa,CAAC;AASrB,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,KAAG,MAwCpD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildVoucherLink.d.ts","sourceRoot":"","sources":["../../../../../../src/types/helpers/buildVoucherLink.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAsB,SAAS,EAAE,MAAM,aAAa,CAAC;AAS5D,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,KAAG,
|
|
1
|
+
{"version":3,"file":"buildVoucherLink.d.ts","sourceRoot":"","sources":["../../../../../../src/types/helpers/buildVoucherLink.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAsB,SAAS,EAAE,MAAM,aAAa,CAAC;AAS5D,eAAO,MAAM,gBAAgB,GAAI,QAAQ,SAAS,KAAG,MAkCpD,CAAC"}
|
package/package.json
CHANGED
package/src/DeunaSDK.ts
CHANGED
|
@@ -27,7 +27,7 @@ import { OpenInNewTabController } from './controllers/OpenInNewTabController';
|
|
|
27
27
|
import { getWidgetController } from './helpers/getController';
|
|
28
28
|
import { Completer } from './helpers/Completer';
|
|
29
29
|
import { ElementsWidgetController } from './controllers/ElementsWidgetController';
|
|
30
|
-
import { Mode, OnDownloadFile } from './interfaces/types';
|
|
30
|
+
import { DownloadType, Mode, OnDownloadFile } from './interfaces/types';
|
|
31
31
|
import { Platform } from 'react-native';
|
|
32
32
|
|
|
33
33
|
export class DeunaSDK extends BaseDeuna {
|
|
@@ -230,6 +230,15 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
230
230
|
this.listeners.forEach((listener) => listener());
|
|
231
231
|
};
|
|
232
232
|
|
|
233
|
+
private notifyDownloadFile = (url: string) => {
|
|
234
|
+
if (this.safeWebViewController instanceof PaymentWidgetController) {
|
|
235
|
+
this.safeWebViewController.callbacks.onDownloadFile?.({
|
|
236
|
+
type: DownloadType.URL,
|
|
237
|
+
data: url,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
};
|
|
241
|
+
|
|
233
242
|
onCloseNewTab = () => {
|
|
234
243
|
if (this.webViewController) {
|
|
235
244
|
this.webViewController.redirectUrl = null;
|
|
@@ -252,18 +261,15 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
252
261
|
if (Platform.OS === 'ios') {
|
|
253
262
|
this.newTabModalDismissPromise = new Completer<void>();
|
|
254
263
|
}
|
|
264
|
+
this.newTabWebViewController.delegate = {
|
|
265
|
+
onFileDownload: this.notifyDownloadFile,
|
|
266
|
+
onNewTabWindowClose: this.onCloseNewTab,
|
|
267
|
+
};
|
|
255
268
|
this.notifyListeners();
|
|
256
269
|
},
|
|
257
|
-
onCloseButtonPressed:
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
this.close();
|
|
261
|
-
},
|
|
262
|
-
onCloseSubWebView: () => {
|
|
263
|
-
// Close the new tab web view when the DEUNA widget
|
|
264
|
-
// emits an error event or when the purchase is successful
|
|
265
|
-
this.onCloseNewTab();
|
|
266
|
-
},
|
|
270
|
+
onCloseButtonPressed: this.close, // Close the payment widget when the user presses the close button
|
|
271
|
+
onCloseSubWebView: this.onCloseNewTab, // Close the new tab web view when the DEUNA widget emits an error event or when the purchase is successful
|
|
272
|
+
onFileDownload: this.notifyDownloadFile, // Notify the user when a request to download a file is made
|
|
267
273
|
};
|
|
268
274
|
};
|
|
269
275
|
}
|
|
@@ -8,6 +8,7 @@ interface DeunaWebViewProps {
|
|
|
8
8
|
onMessage?: (event: any) => void;
|
|
9
9
|
onLoad?: () => void;
|
|
10
10
|
onError?: (error: any) => void;
|
|
11
|
+
onShouldStartLoadWithRequest?: (request: any) => boolean;
|
|
11
12
|
}
|
|
12
13
|
|
|
13
14
|
export const DeunaWebView = (props: DeunaWebViewProps) => {
|
|
@@ -30,6 +31,7 @@ export const DeunaWebView = (props: DeunaWebViewProps) => {
|
|
|
30
31
|
onError={props.onError}
|
|
31
32
|
setSupportMultipleWindows={false}
|
|
32
33
|
javaScriptCanOpenWindowsAutomatically={false}
|
|
34
|
+
onShouldStartLoadWithRequest={props.onShouldStartLoadWithRequest}
|
|
33
35
|
/>
|
|
34
36
|
</View>
|
|
35
37
|
);
|
|
@@ -67,6 +67,10 @@ export const DeunaWidget = (props: DeunaWidgetProps) => {
|
|
|
67
67
|
onMessage={instanceRef.current.webViewController?.onMessage}
|
|
68
68
|
onLoad={instanceRef.current.webViewController?.onLoad}
|
|
69
69
|
onError={instanceRef.current.webViewController?.onError}
|
|
70
|
+
onShouldStartLoadWithRequest={
|
|
71
|
+
instanceRef.current.webViewController
|
|
72
|
+
?.onShouldStartLoadWithRequest
|
|
73
|
+
}
|
|
70
74
|
/>
|
|
71
75
|
<NewTabWebView instance={instanceRef.current} />
|
|
72
76
|
</View>
|
|
@@ -83,6 +87,9 @@ export const DeunaWidget = (props: DeunaWidgetProps) => {
|
|
|
83
87
|
onMessage={instanceRef.current.webViewController?.onMessage}
|
|
84
88
|
onLoad={instanceRef.current.webViewController?.onLoad}
|
|
85
89
|
onError={instanceRef.current.webViewController?.onError}
|
|
90
|
+
onShouldStartLoadWithRequest={
|
|
91
|
+
instanceRef.current.webViewController?.onShouldStartLoadWithRequest
|
|
92
|
+
}
|
|
86
93
|
/>
|
|
87
94
|
)}
|
|
88
95
|
</>
|
|
@@ -51,6 +51,9 @@ export const NewTabWebView = (props: NewTabWebViewProps) => {
|
|
|
51
51
|
onMessage={newTabController?.onMessage}
|
|
52
52
|
onLoad={newTabController?.onLoad}
|
|
53
53
|
onError={newTabController?.onError}
|
|
54
|
+
onShouldStartLoadWithRequest={
|
|
55
|
+
newTabController?.onShouldStartLoadWithRequest
|
|
56
|
+
}
|
|
54
57
|
/>
|
|
55
58
|
</SafeAreaView>
|
|
56
59
|
)}
|
|
@@ -9,11 +9,15 @@ import {
|
|
|
9
9
|
SubmitResult,
|
|
10
10
|
} from '../types';
|
|
11
11
|
import { submitError } from '../interfaces';
|
|
12
|
+
import { Platform } from 'react-native';
|
|
13
|
+
import { ShouldStartLoadRequest } from 'react-native-webview/lib/WebViewTypes';
|
|
12
14
|
|
|
13
15
|
export interface WebViewDelegate {
|
|
14
16
|
onOpenInNewTab?: (url: string) => void;
|
|
15
17
|
onCloseButtonPressed?: () => void;
|
|
16
18
|
onCloseSubWebView?: () => void;
|
|
19
|
+
onFileDownload?: (url: string) => void;
|
|
20
|
+
onNewTabWindowClose?: () => void;
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
export enum WebViewEventType {
|
|
@@ -22,9 +26,15 @@ export enum WebViewEventType {
|
|
|
22
26
|
jsExecutor = 'jsExecutor',
|
|
23
27
|
openInNewTab = 'openInNewTab',
|
|
24
28
|
redirect = 'redirect',
|
|
29
|
+
newTabWindowClose = 'newTabWindowClose',
|
|
25
30
|
}
|
|
26
31
|
|
|
32
|
+
const DOWNLOAD_FILE_REGEX =
|
|
33
|
+
/\.(pdf|doc|docx|xls|xlsx|zip|rar|txt|mp3|mp4|jpg|jpeg|png|gif)$/i;
|
|
34
|
+
|
|
27
35
|
export abstract class BaseWebViewController {
|
|
36
|
+
initialized = false;
|
|
37
|
+
redirectUrl: string | null = null;
|
|
28
38
|
webView: WebView | null = null;
|
|
29
39
|
url: string | null = null;
|
|
30
40
|
|
|
@@ -43,6 +53,52 @@ export abstract class BaseWebViewController {
|
|
|
43
53
|
*/
|
|
44
54
|
abstract onError: (event: any) => void;
|
|
45
55
|
|
|
56
|
+
/**
|
|
57
|
+
* Called when the web view should load a URL in the same web view
|
|
58
|
+
*/
|
|
59
|
+
abstract urlMustBeLoadedInTheSameWebView: (url: string) => boolean;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Checks if the URL is a download URL
|
|
63
|
+
* @param url - The URL to check
|
|
64
|
+
* @returns True if the URL is a download URL, false otherwise
|
|
65
|
+
*/
|
|
66
|
+
isDownloadUrl = (url: string) => {
|
|
67
|
+
return DOWNLOAD_FILE_REGEX.test(url);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Determines if a URL should be loaded in the current WebView or opened in a new tab
|
|
72
|
+
* @param request The navigation request details
|
|
73
|
+
* @returns boolean indicating if the URL should be loaded in current WebView
|
|
74
|
+
*/
|
|
75
|
+
onShouldStartLoadWithRequest = (request: ShouldStartLoadRequest) => {
|
|
76
|
+
// Prevent loading if it's the redirect URL
|
|
77
|
+
if (this.redirectUrl === request.url) {
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
const isNewNavigation = request.isTopFrame && request.url !== this.url;
|
|
82
|
+
const isClickNavigation = request.navigationType === 'click';
|
|
83
|
+
const shouldHandleInNewTab = !this.urlMustBeLoadedInTheSameWebView(
|
|
84
|
+
request.url
|
|
85
|
+
);
|
|
86
|
+
|
|
87
|
+
// For iOS, check both click navigation and new navigation
|
|
88
|
+
// For Android, only check new navigation
|
|
89
|
+
const shouldOpenInNewTab =
|
|
90
|
+
Platform.OS === 'ios'
|
|
91
|
+
? (isClickNavigation || isNewNavigation) && shouldHandleInNewTab
|
|
92
|
+
: isNewNavigation && shouldHandleInNewTab;
|
|
93
|
+
|
|
94
|
+
if (shouldOpenInNewTab) {
|
|
95
|
+
this.delegate?.onOpenInNewTab?.(request.url);
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
return true;
|
|
100
|
+
};
|
|
101
|
+
|
|
46
102
|
/**
|
|
47
103
|
* Release the web view resources
|
|
48
104
|
*/
|
|
@@ -69,6 +125,16 @@ export abstract class DeunaWebViewController extends BaseWebViewController {
|
|
|
69
125
|
this.setXprops();
|
|
70
126
|
};
|
|
71
127
|
|
|
128
|
+
urlMustBeLoadedInTheSameWebView = (url: string) => {
|
|
129
|
+
if (this.isDownloadUrl(url)) {
|
|
130
|
+
this.delegate?.onFileDownload?.(url);
|
|
131
|
+
} else {
|
|
132
|
+
this.redirectUrl = url;
|
|
133
|
+
this.delegate?.onOpenInNewTab?.(url);
|
|
134
|
+
}
|
|
135
|
+
return false;
|
|
136
|
+
};
|
|
137
|
+
|
|
72
138
|
onMessage = (event: WebViewMessageEvent) => {
|
|
73
139
|
const eventData = JSON.parse(event.nativeEvent.data);
|
|
74
140
|
|
|
@@ -100,27 +166,18 @@ export abstract class DeunaWebViewController extends BaseWebViewController {
|
|
|
100
166
|
this.redirectUrl = eventData.url;
|
|
101
167
|
this.delegate?.onOpenInNewTab?.(eventData.url);
|
|
102
168
|
},
|
|
169
|
+
[WebViewEventType.newTabWindowClose]: () => {
|
|
170
|
+
this.delegate?.onNewTabWindowClose?.();
|
|
171
|
+
},
|
|
103
172
|
};
|
|
104
173
|
|
|
105
174
|
mapper[eventData.type as WebViewEventType]?.();
|
|
106
175
|
};
|
|
107
176
|
|
|
108
177
|
setXprops = () => {
|
|
178
|
+
// this.detectDownloadsAndRedirects(true);
|
|
109
179
|
this.webView?.injectJavaScript(
|
|
110
180
|
`
|
|
111
|
-
document.addEventListener('click', function(event) {
|
|
112
|
-
if (event.target.tagName === 'A' && event.target.href) {
|
|
113
|
-
window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.redirect}', url: event.target.href }));
|
|
114
|
-
event.preventDefault(); // Prevent default navigation
|
|
115
|
-
event.stopPropagation();
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
console.log = function(message) {
|
|
119
|
-
window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.consoleLog}', message }));
|
|
120
|
-
};
|
|
121
|
-
window.open = function(url, target, features) {
|
|
122
|
-
window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.openInNewTab}', url }));
|
|
123
|
-
};
|
|
124
181
|
window.xprops = {
|
|
125
182
|
hidePayButton: ${this.hidePayButton},
|
|
126
183
|
onEventDispatch: function (event) {
|
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
import WebView, { WebViewMessageEvent } from 'react-native-webview';
|
|
2
|
-
import {
|
|
2
|
+
import {
|
|
3
|
+
BaseWebViewController,
|
|
4
|
+
WebViewEventType,
|
|
5
|
+
} from './BaseWebViewController';
|
|
3
6
|
import { DeunaLogs } from '../DeunaLogs';
|
|
4
7
|
|
|
5
8
|
export class OpenInNewTabController extends BaseWebViewController {
|
|
@@ -20,6 +23,14 @@ export class OpenInNewTabController extends BaseWebViewController {
|
|
|
20
23
|
console.warn(event);
|
|
21
24
|
};
|
|
22
25
|
|
|
26
|
+
urlMustBeLoadedInTheSameWebView = (url: string) => {
|
|
27
|
+
if (this.isDownloadUrl(url)) {
|
|
28
|
+
this.delegate?.onFileDownload?.(url);
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
return true;
|
|
32
|
+
};
|
|
33
|
+
|
|
23
34
|
onMessage = (event: WebViewMessageEvent) => {
|
|
24
35
|
const eventData = JSON.parse(event.nativeEvent.data);
|
|
25
36
|
if (eventData.type === 'console_log') {
|
|
@@ -28,12 +39,19 @@ export class OpenInNewTabController extends BaseWebViewController {
|
|
|
28
39
|
};
|
|
29
40
|
|
|
30
41
|
setXprops = () => {
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
42
|
+
// Hide the print button on the Efecty page
|
|
43
|
+
this.webView?.injectJavaScript(`
|
|
44
|
+
window.close = function() {
|
|
45
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.newTabWindowClose}', data: '' }));
|
|
46
|
+
};
|
|
47
|
+
(function() {
|
|
48
|
+
setTimeout(function() {
|
|
49
|
+
var button = document.getElementById("cash_efecty_button_print");
|
|
50
|
+
if (button) {
|
|
51
|
+
button.style.display = "none";
|
|
52
|
+
}
|
|
53
|
+
}, 500); // time out 500 ms
|
|
54
|
+
})();
|
|
55
|
+
`);
|
|
38
56
|
};
|
|
39
57
|
}
|