@deuna/react-native-sdk 1.0.3 → 1.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (100) hide show
  1. package/lib/module/DeunaSDK.js +85 -77
  2. package/lib/module/DeunaSDK.js.map +1 -1
  3. package/lib/module/components/DeunaWidget.js +27 -25
  4. package/lib/module/components/DeunaWidget.js.map +1 -1
  5. package/lib/module/components/ExternalUrlWebView.js +56 -0
  6. package/lib/module/components/ExternalUrlWebView.js.map +1 -0
  7. package/lib/module/controllers/BaseWebViewController.js +15 -21
  8. package/lib/module/controllers/BaseWebViewController.js.map +1 -1
  9. package/lib/module/controllers/ElementsWidgetController.js +2 -3
  10. package/lib/module/controllers/ElementsWidgetController.js.map +1 -1
  11. package/lib/module/controllers/{OpenInNewTabController.js → ExternalUrlController.js} +4 -4
  12. package/lib/module/controllers/ExternalUrlController.js.map +1 -0
  13. package/lib/module/controllers/PaymentWidgetController.js +2 -2
  14. package/lib/module/controllers/PaymentWidgetController.js.map +1 -1
  15. package/lib/module/helpers/Completer.js +2 -2
  16. package/lib/module/helpers/Completer.js.map +1 -1
  17. package/lib/module/helpers/CrossPlatformBrowser.js +51 -0
  18. package/lib/module/helpers/CrossPlatformBrowser.js.map +1 -0
  19. package/lib/module/helpers/ExternalUrlHelper.js +96 -0
  20. package/lib/module/helpers/ExternalUrlHelper.js.map +1 -0
  21. package/lib/module/helpers/ViewManager.js +32 -0
  22. package/lib/module/helpers/ViewManager.js.map +1 -0
  23. package/lib/module/helpers/{getController.js → buildDeunaWidgetController.js} +2 -2
  24. package/lib/module/helpers/buildDeunaWidgetController.js.map +1 -0
  25. package/lib/module/helpers/getSubmitStrategy.js +1 -1
  26. package/lib/module/helpers/getSubmitStrategy.js.map +1 -1
  27. package/lib/module/interfaces/constants.js +1 -0
  28. package/lib/module/interfaces/constants.js.map +1 -1
  29. package/lib/module/types/helpers/buildElementsLink.js +3 -1
  30. package/lib/module/types/helpers/buildElementsLink.js.map +1 -1
  31. package/lib/module/types/helpers/buildPaymentLink.js +3 -1
  32. package/lib/module/types/helpers/buildPaymentLink.js.map +1 -1
  33. package/lib/module/types/helpers/buildVoucherLink.js +3 -1
  34. package/lib/module/types/helpers/buildVoucherLink.js.map +1 -1
  35. package/lib/module/types/helpers/constants.js +4 -0
  36. package/lib/module/types/helpers/constants.js.map +1 -0
  37. package/lib/module/types/helpers/urlConfig.js +1 -1
  38. package/lib/module/types/helpers/urlConfig.js.map +1 -1
  39. package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts +9 -11
  40. package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts.map +1 -1
  41. package/lib/typescript/deuna-sdk-react-native/src/components/DeunaWidget.d.ts.map +1 -1
  42. package/lib/typescript/deuna-sdk-react-native/src/components/ExternalUrlWebView.d.ts +7 -0
  43. package/lib/typescript/deuna-sdk-react-native/src/components/ExternalUrlWebView.d.ts.map +1 -0
  44. package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts +4 -6
  45. package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts.map +1 -1
  46. package/lib/typescript/deuna-sdk-react-native/src/controllers/ElementsWidgetController.d.ts.map +1 -1
  47. package/lib/typescript/deuna-sdk-react-native/src/controllers/{OpenInNewTabController.d.ts → ExternalUrlController.d.ts} +2 -2
  48. package/lib/typescript/deuna-sdk-react-native/src/controllers/ExternalUrlController.d.ts.map +1 -0
  49. package/lib/typescript/deuna-sdk-react-native/src/helpers/CrossPlatformBrowser.d.ts +25 -0
  50. package/lib/typescript/deuna-sdk-react-native/src/helpers/CrossPlatformBrowser.d.ts.map +1 -0
  51. package/lib/typescript/deuna-sdk-react-native/src/helpers/ExternalUrlHelper.d.ts +48 -0
  52. package/lib/typescript/deuna-sdk-react-native/src/helpers/ExternalUrlHelper.d.ts.map +1 -0
  53. package/lib/typescript/deuna-sdk-react-native/src/helpers/ViewManager.d.ts +19 -0
  54. package/lib/typescript/deuna-sdk-react-native/src/helpers/ViewManager.d.ts.map +1 -0
  55. package/lib/typescript/deuna-sdk-react-native/src/helpers/{getController.d.ts → buildDeunaWidgetController.d.ts} +2 -2
  56. package/lib/typescript/deuna-sdk-react-native/src/helpers/buildDeunaWidgetController.d.ts.map +1 -0
  57. package/lib/typescript/deuna-sdk-react-native/src/interfaces/constants.d.ts +1 -0
  58. package/lib/typescript/deuna-sdk-react-native/src/interfaces/constants.d.ts.map +1 -1
  59. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildElementsLink.d.ts.map +1 -1
  60. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildPaymentLink.d.ts.map +1 -1
  61. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/buildVoucherLink.d.ts.map +1 -1
  62. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/constants.d.ts +2 -0
  63. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/constants.d.ts.map +1 -0
  64. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts +1 -0
  65. package/lib/typescript/deuna-sdk-react-native/src/types/helpers/urlConfig.d.ts.map +1 -1
  66. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts +8 -0
  67. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/callbacks.d.ts.map +1 -1
  68. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts +1 -0
  69. package/lib/typescript/deuna-sdk-react-native/src/types/interfaces/initWidgetBase.d.ts.map +1 -1
  70. package/package.json +3 -1
  71. package/src/DeunaSDK.ts +102 -90
  72. package/src/components/DeunaWidget.tsx +38 -35
  73. package/src/components/ExternalUrlWebView.tsx +65 -0
  74. package/src/controllers/BaseWebViewController.ts +21 -27
  75. package/src/controllers/ElementsWidgetController.ts +2 -3
  76. package/src/controllers/{OpenInNewTabController.ts → ExternalUrlController.ts} +3 -3
  77. package/src/controllers/PaymentWidgetController.ts +2 -2
  78. package/src/helpers/Completer.ts +2 -2
  79. package/src/helpers/CrossPlatformBrowser.ts +49 -0
  80. package/src/helpers/ExternalUrlHelper.ts +118 -0
  81. package/src/helpers/ViewManager.ts +45 -0
  82. package/src/helpers/{getController.ts → buildDeunaWidgetController.ts} +1 -1
  83. package/src/helpers/getSubmitStrategy.ts +1 -1
  84. package/src/interfaces/constants.ts +2 -0
  85. package/src/types/helpers/buildElementsLink.ts +4 -1
  86. package/src/types/helpers/buildPaymentLink.ts +2 -0
  87. package/src/types/helpers/buildVoucherLink.ts +2 -0
  88. package/src/types/helpers/constants.ts +1 -0
  89. package/src/types/helpers/urlConfig.ts +3 -1
  90. package/src/types/interfaces/callbacks.ts +10 -1
  91. package/src/types/interfaces/initWidgetBase.ts +1 -0
  92. package/lib/module/components/NewTabWebView.js +0 -56
  93. package/lib/module/components/NewTabWebView.js.map +0 -1
  94. package/lib/module/controllers/OpenInNewTabController.js.map +0 -1
  95. package/lib/module/helpers/getController.js.map +0 -1
  96. package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts +0 -7
  97. package/lib/typescript/deuna-sdk-react-native/src/components/NewTabWebView.d.ts.map +0 -1
  98. package/lib/typescript/deuna-sdk-react-native/src/controllers/OpenInNewTabController.d.ts.map +0 -1
  99. package/lib/typescript/deuna-sdk-react-native/src/helpers/getController.d.ts.map +0 -1
  100. package/src/components/NewTabWebView.tsx +0 -64
@@ -2,37 +2,25 @@
2
2
 
3
3
  import { BaseDeuna } from "./types/index.js";
4
4
  import { PaymentWidgetController } from "./controllers/PaymentWidgetController.js";
5
- import { OpenInNewTabController } from "./controllers/OpenInNewTabController.js";
6
- import { getWidgetController } from "./helpers/getController.js";
7
- import { Completer } from "./helpers/Completer.js";
5
+ import { buildDeunaWidgetController } from "./helpers/buildDeunaWidgetController.js";
8
6
  import { ElementsWidgetController } from "./controllers/ElementsWidgetController.js";
9
7
  import { DownloadType, Mode } from "./interfaces/types.js";
10
- import { Platform } from 'react-native';
11
8
  import { DeviceFingerprintController } from "./controllers/DeviceFingerprintController.js";
12
- import { DEVICE_FINGERPRINT_URL } from "./interfaces/constants.js";
9
+ import { DEVICE_FINGERPRINT_URL, DOMAINS_MUST_BE_USE_CROSS_PLATFORM_BROWSER } from "./interfaces/constants.js";
13
10
  import { getSubmitStrategy } from "./helpers/getSubmitStrategy.js";
11
+ import { WebViewManager } from "./helpers/ViewManager.js";
12
+ import { ExternalUrlBrowser, ExternalUrlHelper } from "./helpers/ExternalUrlHelper.js";
14
13
  export class DeunaSDK extends BaseDeuna {
15
14
  constructor(config, onDestroyed) {
16
15
  super();
17
16
  this.config = config;
18
17
  this.onDestroyed = onDestroyed;
19
18
  }
20
- mode = null;
21
19
  listeners = new Set();
22
- webViewController = null;
23
- newTabWebViewController = null;
20
+ deunaWidgetManager = new WebViewManager();
21
+ externalUrlHelper = new ExternalUrlHelper();
24
22
  deviceFingerprintController = null;
25
23
  submitStrategy = null;
26
- modalDismissPromise = null;
27
- newTabModalDismissPromise = null;
28
- get safeWebViewController() {
29
- if (!this.webViewController) {
30
- const errorMessage = 'A variant of the init method must be called first. Please call initPaymentWidget, initVoucherWidget, or another init method before using this functionality.';
31
- console.error(errorMessage);
32
- throw new Error(errorMessage);
33
- }
34
- return this.webViewController;
35
- }
36
24
 
37
25
  /**
38
26
  * Generates a device fingerprint, creates a invisible webview to get the device fingerprint
@@ -64,12 +52,11 @@ export class DeunaSDK extends BaseDeuna {
64
52
  controller,
65
53
  mode
66
54
  } = params;
67
- this.mode = mode ?? Mode.MODAL;
68
- if (this.mode === Mode.MODAL && Platform.OS === 'ios') {
69
- this.modalDismissPromise = new Completer();
70
- }
71
- this.webViewController = controller;
72
- this.webViewController.delegate = this.buildDelegate();
55
+ this.deunaWidgetManager.initialize({
56
+ controller,
57
+ mode: mode ?? Mode.MODAL,
58
+ delegate: this.buildDelegate()
59
+ });
73
60
  this.notifyListeners();
74
61
  };
75
62
 
@@ -80,7 +67,7 @@ export class DeunaSDK extends BaseDeuna {
80
67
  */
81
68
  async initPaymentWidget(props) {
82
69
  this.setWidgetController({
83
- controller: getWidgetController(this.config, {
70
+ controller: buildDeunaWidgetController(this.config, {
84
71
  widget: 'payment',
85
72
  ...props
86
73
  }),
@@ -95,7 +82,7 @@ export class DeunaSDK extends BaseDeuna {
95
82
  */
96
83
  async initElements(props) {
97
84
  this.setWidgetController({
98
- controller: getWidgetController(this.config, {
85
+ controller: buildDeunaWidgetController(this.config, {
99
86
  widget: 'elements',
100
87
  ...props
101
88
  }),
@@ -110,7 +97,7 @@ export class DeunaSDK extends BaseDeuna {
110
97
  */
111
98
  async initNextAction(props) {
112
99
  this.setWidgetController({
113
- controller: getWidgetController(this.config, {
100
+ controller: buildDeunaWidgetController(this.config, {
114
101
  widget: 'nextAction',
115
102
  ...props
116
103
  }),
@@ -125,7 +112,7 @@ export class DeunaSDK extends BaseDeuna {
125
112
  */
126
113
  async initVoucherWidget(props) {
127
114
  this.setWidgetController({
128
- controller: getWidgetController(this.config, {
115
+ controller: buildDeunaWidgetController(this.config, {
129
116
  widget: 'voucher',
130
117
  ...props
131
118
  }),
@@ -133,59 +120,66 @@ export class DeunaSDK extends BaseDeuna {
133
120
  });
134
121
  }
135
122
  isValid = async () => {
136
- return this.safeWebViewController.isValid();
123
+ return this.deunaWidgetManager.controller.isValid();
137
124
  };
138
125
  submit = async () => {
139
126
  this.getStateFn = () => this.getWidgetState();
140
127
  const submitStrategy = await getSubmitStrategy(this);
141
128
  if (!submitStrategy) {
142
- return this.safeWebViewController.submit();
129
+ return this.deunaWidgetManager.controller.submit();
143
130
  }
144
131
  this.submitStrategy = submitStrategy;
145
132
  this.notifyListeners();
146
133
  return this.submitStrategy.submit();
147
134
  };
148
135
  setCustomStyle = async style => {
149
- return this.safeWebViewController.setCustomStyle(style);
136
+ return this.deunaWidgetManager.controller.setCustomStyle(style);
150
137
  };
151
138
  refetchOrder = async () => {
152
- return this.safeWebViewController.refetchOrder();
139
+ return this.deunaWidgetManager.controller.refetchOrder();
153
140
  };
154
141
  getWidgetState = async () => {
155
- return this.safeWebViewController.getWidgetState();
142
+ return this.deunaWidgetManager.controller.getWidgetState();
156
143
  };
157
144
 
158
145
  /**
159
146
  * Closes the DEUNA widget and releases the resources
160
147
  */
161
148
  close = async () => {
162
- if (this.webViewController instanceof PaymentWidgetController) {
163
- this.webViewController.callbacks.onClosed?.(this.webViewController.closedAction);
164
- } else if (this.webViewController instanceof ElementsWidgetController) {
165
- this.webViewController.callbacks.onClosed?.(this.webViewController.closedAction);
149
+ if (!this.deunaWidgetManager.isInitialized) {
150
+ return;
166
151
  }
167
- this.onCloseNewTab();
168
- await this.newTabModalDismissPromise?.wait;
169
- this.newTabWebViewController?.dispose();
170
- this.webViewController?.dispose();
171
- // reset all prop
172
- this.newTabWebViewController = null;
173
- this.webViewController = null;
174
- this.mode = null;
175
- await this.submitStrategy?.deunaSDK.close();
176
- this.submitStrategy = null;
177
- this.notifyListeners();
152
+ try {
153
+ let onClosedCallback;
154
+ const closedAction = this.deunaWidgetManager.controller.closedAction;
155
+ if (this.deunaWidgetManager.controller instanceof PaymentWidgetController) {
156
+ onClosedCallback = this.deunaWidgetManager.controller.callbacks.onClosed;
157
+ } else if (this.deunaWidgetManager.controller instanceof ElementsWidgetController) {
158
+ onClosedCallback = this.deunaWidgetManager.controller.callbacks.onClosed;
159
+ }
178
160
 
179
- // if the widget was shown in modal mode, wait for the modal to be dismissed
180
- await this.modalDismissPromise?.wait;
181
- this.modalDismissPromise = null;
182
- this.onDestroyed?.();
183
- };
184
- onModalDismissed = () => {
185
- this.modalDismissPromise?.complete();
186
- };
187
- onNewTabDismissed = () => {
188
- this.newTabModalDismissPromise?.complete();
161
+ // If the external url was opened in a Safari View Controller or a Custom Chrome Tab
162
+ // we need to wait until the browser is dismissed
163
+ await this.externalUrlHelper.waitForClose();
164
+
165
+ // Destroy the main webview and dismiss the modal
166
+ this.deunaWidgetManager.destroy();
167
+
168
+ // Close the submit strategy if it exists
169
+ await this.submitStrategy?.deunaSDK.close();
170
+ this.submitStrategy = null;
171
+
172
+ // Notify listeners that the widget has been closed
173
+ this.notifyListeners();
174
+
175
+ // Notify the user that the widget has been closed
176
+ this.onDestroyed?.();
177
+
178
+ // Notify the widget that the user has closed the widget
179
+ onClosedCallback?.(closedAction);
180
+ } catch (error) {
181
+ console.error('Error closing the widget', error);
182
+ }
189
183
  };
190
184
  addListener = listener => {
191
185
  this.listeners.add(listener);
@@ -197,20 +191,22 @@ export class DeunaSDK extends BaseDeuna {
197
191
  this.listeners.forEach(listener => listener());
198
192
  };
199
193
  notifyDownloadFile = url => {
200
- if (this.safeWebViewController instanceof PaymentWidgetController) {
201
- this.safeWebViewController.callbacks.onDownloadFile?.({
194
+ if (this.deunaWidgetManager.controller instanceof PaymentWidgetController) {
195
+ this.deunaWidgetManager.controller.callbacks.onDownloadFile?.({
202
196
  type: DownloadType.URL,
203
197
  data: url
204
198
  });
205
199
  }
206
200
  };
207
- onCloseNewTab = () => {
208
- if (this.webViewController) {
209
- this.webViewController.redirectUrl = null;
201
+
202
+ /**
203
+ * Closes the external URL Webview
204
+ */
205
+ onCloseExternalUrl = async () => {
206
+ if (this.externalUrlHelper.externalUrlWebViewController) {
207
+ await this.externalUrlHelper.closeWebView();
208
+ this.notifyListeners();
210
209
  }
211
- this.newTabWebViewController?.dispose();
212
- this.newTabWebViewController = null;
213
- this.notifyListeners();
214
210
  };
215
211
 
216
212
  /**
@@ -221,21 +217,33 @@ export class DeunaSDK extends BaseDeuna {
221
217
  */
222
218
  buildDelegate = () => {
223
219
  return {
224
- onOpenInNewTab: url => {
225
- this.newTabWebViewController = new OpenInNewTabController(url);
226
- if (Platform.OS === 'ios') {
227
- this.newTabModalDismissPromise = new Completer();
220
+ onOpenExternalUrl: url => {
221
+ try {
222
+ const host = new URL(url).host;
223
+ let browser = ExternalUrlBrowser.WEB_VIEW;
224
+ // Check if the URL is from a domain that must be opened in a cross platform browser (SafariView or Chrome Custom Tab)
225
+ for (const domain of DOMAINS_MUST_BE_USE_CROSS_PLATFORM_BROWSER) {
226
+ if (host.includes(domain)) {
227
+ browser = ExternalUrlBrowser.CROSS_PLATFORM_BROWSER;
228
+ break;
229
+ }
230
+ }
231
+ this.externalUrlHelper.openUrl({
232
+ url,
233
+ browser,
234
+ delegate: {
235
+ onCloseExternalUrl: this.onCloseExternalUrl,
236
+ onFileDownload: this.notifyDownloadFile
237
+ }
238
+ });
239
+ this.notifyListeners();
240
+ } catch (error) {
241
+ console.error('Error opening external URL', error);
228
242
  }
229
- this.newTabWebViewController.delegate = {
230
- onFileDownload: this.notifyDownloadFile,
231
- onNewTabWindowClose: this.onCloseNewTab
232
- };
233
- this.notifyListeners();
234
243
  },
244
+ onCloseExternalUrl: this.onCloseExternalUrl,
235
245
  onCloseButtonPressed: this.close,
236
246
  // Close the payment widget when the user presses the close button
237
- onCloseSubWebView: this.onCloseNewTab,
238
- // Close the new tab web view when the DEUNA widget emits an error event or when the purchase is successful
239
247
  onFileDownload: this.notifyDownloadFile // Notify the user when a request to download a file is made
240
248
  };
241
249
  };
@@ -1 +1 @@
1
- {"version":3,"names":["BaseDeuna","PaymentWidgetController","OpenInNewTabController","getWidgetController","Completer","ElementsWidgetController","DownloadType","Mode","Platform","DeviceFingerprintController","DEVICE_FINGERPRINT_URL","getSubmitStrategy","DeunaSDK","constructor","config","onDestroyed","mode","listeners","Set","webViewController","newTabWebViewController","deviceFingerprintController","submitStrategy","modalDismissPromise","newTabModalDismissPromise","safeWebViewController","errorMessage","console","error","Error","getSessionId","params","publicApiKey","environment","url","notifyListeners","deviceFingerprint","generateDeviceFingerprint","dispose","initialize","setWidgetController","controller","MODAL","OS","delegate","buildDelegate","initPaymentWidget","props","widget","initElements","initNextAction","initVoucherWidget","isValid","submit","getStateFn","getWidgetState","setCustomStyle","style","refetchOrder","close","callbacks","onClosed","closedAction","onCloseNewTab","wait","deunaSDK","onModalDismissed","complete","onNewTabDismissed","addListener","listener","add","removeListener","delete","forEach","notifyDownloadFile","onDownloadFile","type","URL","data","redirectUrl","onOpenInNewTab","onFileDownload","onNewTabWindowClose","onCloseButtonPressed","onCloseSubWebView"],"sourceRoot":"../../src","sources":["DeunaSDK.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["BaseDeuna","PaymentWidgetController","buildDeunaWidgetController","ElementsWidgetController","DownloadType","Mode","DeviceFingerprintController","DEVICE_FINGERPRINT_URL","DOMAINS_MUST_BE_USE_CROSS_PLATFORM_BROWSER","getSubmitStrategy","WebViewManager","ExternalUrlBrowser","ExternalUrlHelper","DeunaSDK","constructor","config","onDestroyed","listeners","Set","deunaWidgetManager","externalUrlHelper","deviceFingerprintController","submitStrategy","getSessionId","params","publicApiKey","environment","url","notifyListeners","deviceFingerprint","generateDeviceFingerprint","dispose","initialize","setWidgetController","controller","mode","MODAL","delegate","buildDelegate","initPaymentWidget","props","widget","initElements","initNextAction","initVoucherWidget","isValid","submit","getStateFn","getWidgetState","setCustomStyle","style","refetchOrder","close","isInitialized","onClosedCallback","closedAction","callbacks","onClosed","waitForClose","destroy","deunaSDK","error","console","addListener","listener","add","removeListener","delete","forEach","notifyDownloadFile","onDownloadFile","type","URL","data","onCloseExternalUrl","externalUrlWebViewController","closeWebView","onOpenExternalUrl","host","browser","WEB_VIEW","domain","includes","CROSS_PLATFORM_BROWSER","openUrl","onFileDownload","onCloseButtonPressed"],"sourceRoot":"../../src","sources":["DeunaSDK.ts"],"mappings":"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","ignoreList":[]}
@@ -3,9 +3,9 @@
3
3
  import { Modal, SafeAreaView, StyleSheet, View } from 'react-native';
4
4
  import { useEffect, useRef, useState } from 'react';
5
5
  import { DeunaWebView } from "./DeunaWebView.js";
6
- import { NewTabWebView } from "./NewTabWebView.js";
7
6
  import { Mode } from "../interfaces/types.js";
8
7
  import { DeviceFingerprintWebView } from "./DeviceFingerprintWebView.js";
8
+ import { ExternalUrlWebView } from "./ExternalUrlWebView.js";
9
9
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
10
10
  export const DeunaWidget = props => {
11
11
  const {
@@ -38,7 +38,7 @@ const DeunaWidgetContainer = props => {
38
38
  instance
39
39
  } = props;
40
40
  const instanceRef = useRef(instance);
41
- const [mode, setMode] = useState(instance.mode);
41
+ const [isVisible, setIsVisible] = useState(instanceRef.current.deunaWidgetManager.isInitialized);
42
42
  useEffect(() => {
43
43
  instanceRef.current = instance;
44
44
  }, [instance]);
@@ -47,59 +47,61 @@ const DeunaWidgetContainer = props => {
47
47
  // has changed
48
48
  useEffect(() => {
49
49
  const listener = () => {
50
- setMode(instanceRef.current.mode);
50
+ setIsVisible(instanceRef.current.deunaWidgetManager.isInitialized);
51
51
  };
52
52
  instanceRef.current.addListener(listener);
53
53
  return () => {
54
54
  instanceRef.current.removeListener(listener);
55
- instanceRef.current.webViewController?.dispose();
55
+ if (instanceRef.current.deunaWidgetManager.isInitialized) {
56
+ instanceRef.current.deunaWidgetManager.controller?.dispose();
57
+ }
56
58
  };
57
59
  }, []);
58
- const isModal = mode === Mode.MODAL;
59
- const isEmbedded = mode === Mode.EMBEDDED;
60
60
 
61
61
  /**
62
62
  * This function is used to close the widget
63
63
  */
64
64
  const onClose = () => {
65
- const controller = instanceRef.current.webViewController;
65
+ const controller = instanceRef.current.deunaWidgetManager.controller;
66
66
  controller.closedAction = 'userAction';
67
67
  instanceRef.current.close();
68
68
  };
69
69
 
70
70
  // render the widget if mode is not null
71
+ const viewManager = instanceRef.current.deunaWidgetManager;
72
+ const controller = viewManager.isInitialized ? viewManager.controller : null;
73
+ const isModal = isVisible && viewManager.mode === Mode.MODAL;
74
+ const isEmbedded = isVisible && viewManager.mode === Mode.EMBEDDED;
71
75
  return /*#__PURE__*/_jsxs(_Fragment, {
72
- children: [/*#__PURE__*/_jsx(Modal, {
76
+ children: [isModal && /*#__PURE__*/_jsx(Modal, {
73
77
  presentationStyle: "pageSheet",
74
78
  animationType: "slide",
75
79
  onRequestClose: onClose,
76
- onDismiss: instanceRef.current.onModalDismissed,
77
- visible: isModal,
78
- children: isModal && /*#__PURE__*/_jsx(SafeAreaView, {
80
+ children: /*#__PURE__*/_jsx(SafeAreaView, {
79
81
  style: styles.container,
80
82
  children: /*#__PURE__*/_jsxs(View, {
81
83
  style: styles.container,
82
84
  children: [/*#__PURE__*/_jsx(DeunaWebView, {
83
- url: instanceRef.current.webViewController?.url ?? '',
84
- onWebView: instanceRef.current.webViewController?.setWebView,
85
- onMessage: instanceRef.current.webViewController?.onMessage,
86
- onLoad: instanceRef.current.webViewController?.onLoad,
87
- onError: instanceRef.current.webViewController?.onError,
88
- onShouldStartLoadWithRequest: instanceRef.current.webViewController?.onShouldStartLoadWithRequest
89
- }), /*#__PURE__*/_jsx(NewTabWebView, {
85
+ url: controller?.url ?? '',
86
+ onWebView: controller?.setWebView,
87
+ onMessage: controller?.onMessage,
88
+ onLoad: controller?.onLoad,
89
+ onError: controller?.onError,
90
+ onShouldStartLoadWithRequest: controller?.onShouldStartLoadWithRequest
91
+ }), /*#__PURE__*/_jsx(ExternalUrlWebView, {
90
92
  instance: instanceRef.current
91
93
  })]
92
94
  })
93
95
  })
94
- }), isEmbedded && /*#__PURE__*/_jsx(NewTabWebView, {
96
+ }), isEmbedded && /*#__PURE__*/_jsx(ExternalUrlWebView, {
95
97
  instance: instanceRef.current
96
98
  }), isEmbedded && /*#__PURE__*/_jsx(DeunaWebView, {
97
- url: instanceRef.current.webViewController?.url ?? '',
98
- onWebView: instanceRef.current.webViewController?.setWebView,
99
- onMessage: instanceRef.current.webViewController?.onMessage,
100
- onLoad: instanceRef.current.webViewController?.onLoad,
101
- onError: instanceRef.current.webViewController?.onError,
102
- onShouldStartLoadWithRequest: instanceRef.current.webViewController?.onShouldStartLoadWithRequest
99
+ url: controller?.url ?? '',
100
+ onWebView: controller?.setWebView,
101
+ onMessage: controller?.onMessage,
102
+ onLoad: controller?.onLoad,
103
+ onError: controller?.onError,
104
+ onShouldStartLoadWithRequest: controller?.onShouldStartLoadWithRequest
103
105
  }), /*#__PURE__*/_jsx(DeviceFingerprintWebView, {
104
106
  instance: instanceRef.current
105
107
  })]
@@ -1 +1 @@
1
- {"version":3,"names":["Modal","SafeAreaView","StyleSheet","View","useEffect","useRef","useState","DeunaWebView","NewTabWebView","Mode","DeviceFingerprintWebView","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DeunaWidget","props","instance","instanceRef","showPaymentStrategy","setShowPaymentStrategy","current","listener","submitStrategy","addListener","removeListener","children","DeunaWidgetContainer","deunaSDK","mode","setMode","webViewController","dispose","isModal","MODAL","isEmbedded","EMBEDDED","onClose","controller","closedAction","close","presentationStyle","animationType","onRequestClose","onDismiss","onModalDismissed","visible","style","styles","container","url","onWebView","setWebView","onMessage","onLoad","onError","onShouldStartLoadWithRequest","create","flex"],"sourceRoot":"../../../src","sources":["components/DeunaWidget.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Modal","SafeAreaView","StyleSheet","View","useEffect","useRef","useState","DeunaWebView","Mode","DeviceFingerprintWebView","ExternalUrlWebView","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","DeunaWidget","props","instance","instanceRef","showPaymentStrategy","setShowPaymentStrategy","current","listener","submitStrategy","addListener","removeListener","children","DeunaWidgetContainer","deunaSDK","isVisible","setIsVisible","deunaWidgetManager","isInitialized","controller","dispose","onClose","closedAction","close","viewManager","isModal","mode","MODAL","isEmbedded","EMBEDDED","presentationStyle","animationType","onRequestClose","style","styles","container","url","onWebView","setWebView","onMessage","onLoad","onError","onShouldStartLoadWithRequest","create","flex"],"sourceRoot":"../../../src","sources":["components/DeunaWidget.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import { Modal, SafeAreaView, StyleSheet } from 'react-native';
5
+ import { DeunaWebView } from "./DeunaWebView.js";
6
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
7
+ export const ExternalUrlWebView = props => {
8
+ const {
9
+ instance
10
+ } = props;
11
+ const instanceRef = useRef(instance);
12
+ const [visible, setVisible] = useState(false);
13
+ useEffect(() => {
14
+ instanceRef.current = instance;
15
+ }, [instance]);
16
+
17
+ // Listen when the DeunaSDK instance configuration
18
+ // has changed
19
+ useEffect(() => {
20
+ const ref = instanceRef.current;
21
+ const listener = () => {
22
+ const isVisible = !!ref.externalUrlHelper.externalUrlWebViewController;
23
+ setVisible(isVisible);
24
+ };
25
+ instanceRef.current.addListener(listener);
26
+ return () => {
27
+ ref.removeListener(listener);
28
+ ref.externalUrlHelper.externalUrlWebViewController?.dispose();
29
+ };
30
+ }, []);
31
+ const externalUrlWebViewController = instanceRef.current.externalUrlHelper.externalUrlWebViewController;
32
+ return /*#__PURE__*/_jsx(_Fragment, {
33
+ children: visible && /*#__PURE__*/_jsx(Modal, {
34
+ presentationStyle: "pageSheet",
35
+ animationType: "slide",
36
+ onRequestClose: instanceRef.current.onCloseExternalUrl,
37
+ children: /*#__PURE__*/_jsx(SafeAreaView, {
38
+ style: styles.container,
39
+ children: /*#__PURE__*/_jsx(DeunaWebView, {
40
+ url: externalUrlWebViewController?.url ?? '',
41
+ onWebView: externalUrlWebViewController?.setWebView,
42
+ onMessage: externalUrlWebViewController?.onMessage,
43
+ onLoad: externalUrlWebViewController?.onLoad,
44
+ onError: externalUrlWebViewController?.onError,
45
+ onShouldStartLoadWithRequest: externalUrlWebViewController?.onShouldStartLoadWithRequest
46
+ })
47
+ })
48
+ })
49
+ });
50
+ };
51
+ const styles = StyleSheet.create({
52
+ container: {
53
+ flex: 1
54
+ }
55
+ });
56
+ //# sourceMappingURL=ExternalUrlWebView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useState","Modal","SafeAreaView","StyleSheet","DeunaWebView","jsx","_jsx","Fragment","_Fragment","ExternalUrlWebView","props","instance","instanceRef","visible","setVisible","current","ref","listener","isVisible","externalUrlHelper","externalUrlWebViewController","addListener","removeListener","dispose","children","presentationStyle","animationType","onRequestClose","onCloseExternalUrl","style","styles","container","url","onWebView","setWebView","onMessage","onLoad","onError","onShouldStartLoadWithRequest","create","flex"],"sourceRoot":"../../../src","sources":["components/ExternalUrlWebView.tsx"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAQ,OAAO;AAEnD,SAASC,KAAK,EAAEC,YAAY,EAAEC,UAAU,QAAQ,cAAc;AAC9D,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA;AAM9C,OAAO,MAAMC,kBAAkB,GAAIC,KAA8B,IAAK;EACpE,MAAM;IAAEC;EAAS,CAAC,GAAGD,KAAK;EAC1B,MAAME,WAAW,GAAGb,MAAM,CAAWY,QAAQ,CAAC;EAC9C,MAAM,CAACE,OAAO,EAAEC,UAAU,CAAC,GAAGd,QAAQ,CAAC,KAAK,CAAC;EAE7CF,SAAS,CAAC,MAAM;IACdc,WAAW,CAACG,OAAO,GAAGJ,QAAQ;EAChC,CAAC,EAAE,CAACA,QAAQ,CAAC,CAAC;;EAEd;EACA;EACAb,SAAS,CAAC,MAAM;IACd,MAAMkB,GAAG,GAAGJ,WAAW,CAACG,OAAO;IAC/B,MAAME,QAAQ,GAAGA,CAAA,KAAM;MACrB,MAAMC,SAAS,GAAG,CAAC,CAACF,GAAG,CAACG,iBAAiB,CAACC,4BAA4B;MACtEN,UAAU,CAACI,SAAS,CAAC;IACvB,CAAC;IAEDN,WAAW,CAACG,OAAO,CAACM,WAAW,CAACJ,QAAQ,CAAC;IAEzC,OAAO,MAAM;MACXD,GAAG,CAACM,cAAc,CAACL,QAAQ,CAAC;MAC5BD,GAAG,CAACG,iBAAiB,CAACC,4BAA4B,EAAEG,OAAO,CAAC,CAAC;IAC/D,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMH,4BAA4B,GAChCR,WAAW,CAACG,OAAO,CAACI,iBAAiB,CAACC,4BAA4B;EAEpE,oBACEd,IAAA,CAAAE,SAAA;IAAAgB,QAAA,EACGX,OAAO,iBACNP,IAAA,CAACL,KAAK;MACJwB,iBAAiB,EAAC,WAAW;MAC7BC,aAAa,EAAC,OAAO;MACrBC,cAAc,EAAEf,WAAW,CAACG,OAAO,CAACa,kBAAmB;MAAAJ,QAAA,eAEvDlB,IAAA,CAACJ,YAAY;QAAC2B,KAAK,EAAEC,MAAM,CAACC,SAAU;QAAAP,QAAA,eACpClB,IAAA,CAACF,YAAY;UACX4B,GAAG,EAAEZ,4BAA4B,EAAEY,GAAG,IAAI,EAAG;UAC7CC,SAAS,EAAEb,4BAA4B,EAAEc,UAAW;UACpDC,SAAS,EAAEf,4BAA4B,EAAEe,SAAU;UACnDC,MAAM,EAAEhB,4BAA4B,EAAEgB,MAAO;UAC7CC,OAAO,EAAEjB,4BAA4B,EAAEiB,OAAQ;UAC/CC,4BAA4B,EAC1BlB,4BAA4B,EAAEkB;QAC/B,CACF;MAAC,CACU;IAAC,CACV;EACR,CACD,CAAC;AAEP,CAAC;AAED,MAAMR,MAAM,GAAG3B,UAAU,CAACoC,MAAM,CAAC;EAAER,SAAS,EAAE;IAAES,IAAI,EAAE;EAAE;AAAE,CAAC,CAAC","ignoreList":[]}
@@ -7,15 +7,14 @@ export let WebViewEventType = /*#__PURE__*/function (WebViewEventType) {
7
7
  WebViewEventType["consoleLog"] = "consoleLog";
8
8
  WebViewEventType["eventDispatch"] = "eventDispatch";
9
9
  WebViewEventType["jsExecutor"] = "jsExecutor";
10
- WebViewEventType["openInNewTab"] = "openInNewTab";
10
+ WebViewEventType["openExternalUrl"] = "openExternalUrl";
11
11
  WebViewEventType["redirect"] = "redirect";
12
- WebViewEventType["newTabWindowClose"] = "newTabWindowClose";
12
+ WebViewEventType["closeExternalUrl"] = "closeExternalUrl";
13
13
  return WebViewEventType;
14
14
  }({});
15
15
  const DOWNLOAD_FILE_REGEX = /\.(pdf|doc|docx|xls|xlsx|zip|rar|txt|mp3|mp4|jpg|jpeg|png|gif)$/i;
16
16
  export class BaseWebViewController {
17
17
  initialized = false;
18
- redirectUrl = null;
19
18
  webView = null;
20
19
  url = null;
21
20
  delegate = null;
@@ -52,19 +51,14 @@ export class BaseWebViewController {
52
51
  * @returns boolean indicating if the URL should be loaded in current WebView
53
52
  */
54
53
  onShouldStartLoadWithRequest = request => {
55
- // Prevent loading if it's the redirect URL
56
- if (this.redirectUrl === request.url) {
57
- return false;
54
+ if (this.url === request.url) {
55
+ return true;
58
56
  }
59
- const isNewNavigation = request.isTopFrame && request.url !== this.url;
60
- const isClickNavigation = request.navigationType === 'click';
61
- const shouldHandleInNewTab = !this.urlMustBeLoadedInTheSameWebView(request.url);
62
-
63
- // For iOS, check both click navigation and new navigation
64
- // For Android, only check new navigation
65
- const shouldOpenInNewTab = Platform.OS === 'ios' ? (isClickNavigation || isNewNavigation) && shouldHandleInNewTab : isNewNavigation && shouldHandleInNewTab;
66
- if (shouldOpenInNewTab) {
67
- this.delegate?.onOpenInNewTab?.(request.url);
57
+ const isAndroid = Platform.OS === 'android';
58
+ const isNewNavigation = isAndroid ? request.url.startsWith('https://') : request.navigationType === 'click';
59
+ const shouldOpenExternally = !this.urlMustBeLoadedInTheSameWebView(request.url);
60
+ if (isNewNavigation && shouldOpenExternally) {
61
+ this.delegate?.onOpenExternalUrl?.(request.url);
68
62
  return false;
69
63
  }
70
64
  return true;
@@ -114,18 +108,18 @@ export class DeunaWebViewController extends BaseWebViewController {
114
108
  this.jsExecutor.requests.get(requestId)?.(data);
115
109
  this.jsExecutor.requests.delete(requestId);
116
110
  },
117
- [WebViewEventType.openInNewTab]: () => {
118
- this.delegate?.onOpenInNewTab?.(eventData.url);
111
+ [WebViewEventType.openExternalUrl]: () => {
112
+ this.delegate?.onOpenExternalUrl?.(eventData.url);
119
113
  },
120
114
  [WebViewEventType.redirect]: () => {
121
115
  if (this.redirectUrl) {
122
116
  return;
123
117
  }
124
118
  this.redirectUrl = eventData.url;
125
- this.delegate?.onOpenInNewTab?.(eventData.url);
119
+ this.delegate?.onOpenExternalUrl?.(eventData.url);
126
120
  },
127
- [WebViewEventType.newTabWindowClose]: () => {
128
- this.delegate?.onNewTabWindowClose?.();
121
+ [WebViewEventType.closeExternalUrl]: () => {
122
+ this.delegate?.onCloseExternalUrl?.();
129
123
  }
130
124
  };
131
125
  mapper[eventData.type]?.();
@@ -133,7 +127,7 @@ export class DeunaWebViewController extends BaseWebViewController {
133
127
  setXprops = () => {
134
128
  this.webView?.injectJavaScript(`
135
129
  window.open = function(url, target, features) {
136
- window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.openInNewTab}', url }));
130
+ window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.openExternalUrl}', url }));
137
131
  };
138
132
  console.log = function(message) {
139
133
  window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.consoleLog}', message }));