@deuna/react-native-sdk 2.0.3 → 2.0.5
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 +4 -9
- package/lib/module/DeunaSDK.js.map +1 -1
- package/lib/module/controllers/BaseWebViewController.js +15 -3
- package/lib/module/controllers/BaseWebViewController.js.map +1 -1
- package/lib/module/helpers/ExternalUrlHelper.js +8 -2
- package/lib/module/helpers/ExternalUrlHelper.js.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/DeunaSDK.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts +3 -1
- package/lib/typescript/deuna-sdk-react-native/src/controllers/BaseWebViewController.d.ts.map +1 -1
- package/lib/typescript/deuna-sdk-react-native/src/helpers/ExternalUrlHelper.d.ts +4 -1
- package/lib/typescript/deuna-sdk-react-native/src/helpers/ExternalUrlHelper.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/DeunaSDK.ts +4 -9
- package/src/controllers/BaseWebViewController.ts +19 -4
- package/src/helpers/ExternalUrlHelper.ts +13 -2
- package/CHANGELOG.md +0 -214
package/lib/module/DeunaSDK.js
CHANGED
|
@@ -67,7 +67,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
67
67
|
* @param props.mode - The mode for the widget
|
|
68
68
|
*/
|
|
69
69
|
async initPaymentWidget(props) {
|
|
70
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
71
70
|
this.setWidgetController({
|
|
72
71
|
controller: buildDeunaWidgetController(this.config, {
|
|
73
72
|
widget: 'payment',
|
|
@@ -84,7 +83,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
84
83
|
* @param props.mode - The mode for the widget
|
|
85
84
|
*/
|
|
86
85
|
async initElements(props) {
|
|
87
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
88
86
|
this.setWidgetController({
|
|
89
87
|
controller: buildDeunaWidgetController(this.config, {
|
|
90
88
|
widget: 'elements',
|
|
@@ -100,7 +98,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
100
98
|
* @param props.mode - The mode for the widget
|
|
101
99
|
*/
|
|
102
100
|
async initNextAction(props) {
|
|
103
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
104
101
|
this.setWidgetController({
|
|
105
102
|
controller: buildDeunaWidgetController(this.config, {
|
|
106
103
|
widget: 'nextAction',
|
|
@@ -116,7 +113,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
116
113
|
* @param props.mode - The mode for the widget
|
|
117
114
|
*/
|
|
118
115
|
async initVoucherWidget(props) {
|
|
119
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
120
116
|
this.setWidgetController({
|
|
121
117
|
controller: buildDeunaWidgetController(this.config, {
|
|
122
118
|
widget: 'voucher',
|
|
@@ -186,9 +182,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
186
182
|
onClosedCallback?.(closedAction);
|
|
187
183
|
} catch (error) {
|
|
188
184
|
console.error('Error closing the widget', error);
|
|
189
|
-
} finally {
|
|
190
|
-
// Releasing the widget must also release in-app browser reopen guard state.
|
|
191
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
192
185
|
}
|
|
193
186
|
};
|
|
194
187
|
addListener = listener => {
|
|
@@ -227,7 +220,7 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
227
220
|
*/
|
|
228
221
|
buildDelegate = () => {
|
|
229
222
|
return {
|
|
230
|
-
onOpenExternalUrl: url => {
|
|
223
|
+
onOpenExternalUrl: (url, options) => {
|
|
231
224
|
try {
|
|
232
225
|
const hostMatch = url.match(/^https?:\/\/([^/?#]+)/i);
|
|
233
226
|
const host = hostMatch?.[1] ?? '';
|
|
@@ -239,7 +232,9 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
239
232
|
break;
|
|
240
233
|
}
|
|
241
234
|
}
|
|
242
|
-
if (browser === ExternalUrlBrowser.IN_APP_BROWSER && !this.externalUrlHelper.canOpenInAppBrowserUrl(url
|
|
235
|
+
if (browser === ExternalUrlBrowser.IN_APP_BROWSER && !this.externalUrlHelper.canOpenInAppBrowserUrl(url, {
|
|
236
|
+
bypassReopenGuard: options?.userInitiated === true
|
|
237
|
+
})) {
|
|
243
238
|
return;
|
|
244
239
|
}
|
|
245
240
|
this.externalUrlHelper.openUrl({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["BaseDeuna","PaymentWidgetController","buildDeunaWidgetController","ElementsWidgetController","DownloadType","Mode","DeviceFingerprintController","DEVICE_FINGERPRINT_URL","DOMAINS_MUST_BE_USE_IN_APP_BROWSER","getSubmitStrategy","WebViewManager","ExternalUrlBrowser","ExternalUrlHelper","DefaultInAppBrowserAdapter","DeunaSDK","constructor","config","onDestroyed","externalUrlHelper","inAppBrowserAdapter","listeners","Set","deunaWidgetManager","deviceFingerprintController","submitStrategy","getSessionId","params","publicApiKey","environment","url","notifyListeners","deviceFingerprint","generateDeviceFingerprint","dispose","initialize","setWidgetController","controller","mode","MODAL","delegate","buildDelegate","initPaymentWidget","props","
|
|
1
|
+
{"version":3,"names":["BaseDeuna","PaymentWidgetController","buildDeunaWidgetController","ElementsWidgetController","DownloadType","Mode","DeviceFingerprintController","DEVICE_FINGERPRINT_URL","DOMAINS_MUST_BE_USE_IN_APP_BROWSER","getSubmitStrategy","WebViewManager","ExternalUrlBrowser","ExternalUrlHelper","DefaultInAppBrowserAdapter","DeunaSDK","constructor","config","onDestroyed","externalUrlHelper","inAppBrowserAdapter","listeners","Set","deunaWidgetManager","deviceFingerprintController","submitStrategy","getSessionId","params","publicApiKey","environment","url","notifyListeners","deviceFingerprint","generateDeviceFingerprint","dispose","initialize","setWidgetController","controller","mode","MODAL","delegate","buildDelegate","initPaymentWidget","props","widget","sdkInstance","initElements","initNextAction","initVoucherWidget","isValid","submit","getStateFn","getWidgetState","setCustomStyle","style","refetchOrder","close","isInitialized","resetInAppBrowserReopenGuard","onClosedCallback","closedAction","callbacks","onClosed","waitForClose","destroy","deunaSDK","error","console","addListener","listener","add","removeListener","delete","forEach","notifyDownloadFile","onDownloadFile","type","URL","data","onCloseExternalUrl","externalUrlWebViewController","closeWebView","onOpenExternalUrl","options","hostMatch","match","host","browser","WEB_VIEW","domain","includes","IN_APP_BROWSER","canOpenInAppBrowserUrl","bypassReopenGuard","userInitiated","openUrl","onFileDownload","onCloseButtonPressed"],"sourceRoot":"../../src","sources":["DeunaSDK.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -58,7 +58,9 @@ export class BaseWebViewController {
|
|
|
58
58
|
const isNewNavigation = isAndroid ? request.url.startsWith('https://') : request.navigationType === 'click';
|
|
59
59
|
const shouldOpenExternally = !this.urlMustBeLoadedInTheSameWebView(request.url);
|
|
60
60
|
if (isNewNavigation && shouldOpenExternally) {
|
|
61
|
-
this.delegate?.onOpenExternalUrl?.(request.url
|
|
61
|
+
this.delegate?.onOpenExternalUrl?.(request.url, {
|
|
62
|
+
userInitiated: request.navigationType === 'click'
|
|
63
|
+
});
|
|
62
64
|
return false;
|
|
63
65
|
}
|
|
64
66
|
return true;
|
|
@@ -156,7 +158,9 @@ export class DeunaWebViewController extends BaseWebViewController {
|
|
|
156
158
|
this.jsExecutor.requests.delete(requestId);
|
|
157
159
|
},
|
|
158
160
|
[WebViewEventType.openExternalUrl]: () => {
|
|
159
|
-
this.delegate?.onOpenExternalUrl?.(eventData.url
|
|
161
|
+
this.delegate?.onOpenExternalUrl?.(eventData.url, {
|
|
162
|
+
userInitiated: eventData.userInitiated === true
|
|
163
|
+
});
|
|
160
164
|
},
|
|
161
165
|
[WebViewEventType.redirect]: () => {
|
|
162
166
|
if (this.redirectUrl) {
|
|
@@ -177,8 +181,16 @@ export class DeunaWebViewController extends BaseWebViewController {
|
|
|
177
181
|
};
|
|
178
182
|
setXprops = () => {
|
|
179
183
|
this.webView?.injectJavaScript(`
|
|
184
|
+
window.__deunaLastUserInteractionAt = 0;
|
|
185
|
+
document.addEventListener('pointerdown', function() {
|
|
186
|
+
window.__deunaLastUserInteractionAt = Date.now();
|
|
187
|
+
}, true);
|
|
188
|
+
document.addEventListener('keydown', function() {
|
|
189
|
+
window.__deunaLastUserInteractionAt = Date.now();
|
|
190
|
+
}, true);
|
|
180
191
|
window.open = function(url, target, features) {
|
|
181
|
-
|
|
192
|
+
var isUserInitiated = Date.now() - (window.__deunaLastUserInteractionAt || 0) < 1500;
|
|
193
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.openExternalUrl}', url, userInitiated: isUserInitiated }));
|
|
182
194
|
};
|
|
183
195
|
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
184
196
|
type: '${WebViewEventType.userAgentResolved}',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DeunaLogs","submitError","Platform","WebViewEventType","DOWNLOAD_FILE_REGEX","BaseWebViewController","webView","url","delegate","jsExecutor","JsExecutor","setWebView","isDownloadUrl","test","onShouldStartLoadWithRequest","request","isAndroid","OS","isNewNavigation","startsWith","navigationType","shouldOpenExternally","urlMustBeLoadedInTheSameWebView","onOpenExternalUrl","dispose","stopLoading","DeunaWebViewController","hidePayButton","redirectUrl","closedAction","isWebViewInitialized","fraudId","userAgent","resolvedWebViewUserAgent","constructor","widgetConfig","trim","init","fraudCredentials","sdkInstance","generateFraudId","getSessionId","execute","getFraudIdFnString","e","console","log","buildSuccessPayload","payload","enrichedPayload","resolvedUserAgent","user_agent","fraud_id","onLoad","setXprops","onFileDownload","onMessage","event","eventData","JSON","parse","nativeEvent","data","mapper","consoleLog","info","stringify","message","eventDispatch","onEventDispatch","requestId","requests","get","delete","openExternalUrl","redirect","closeExternalUrl","onCloseExternalUrl","userAgentResolved","length","type","injectJavaScript","getWidgetState","result","deunaWidgetState","refetchOrder","order","setCustomStyle","style","isValid","submit","status","code","takeScreenshot","imgData","Map","jsCode","Promise","resolve","set"],"sourceRoot":"../../../src","sources":["controllers/BaseWebViewController.ts"],"mappings":";;AACA,SAASA,SAAS,QAAQ,iBAAc;AASxC,SAASC,WAAW,QAAsB,wBAAe;AACzD,SAASC,QAAQ,QAAQ,cAAc;
|
|
1
|
+
{"version":3,"names":["DeunaLogs","submitError","Platform","WebViewEventType","DOWNLOAD_FILE_REGEX","BaseWebViewController","webView","url","delegate","jsExecutor","JsExecutor","setWebView","isDownloadUrl","test","onShouldStartLoadWithRequest","request","isAndroid","OS","isNewNavigation","startsWith","navigationType","shouldOpenExternally","urlMustBeLoadedInTheSameWebView","onOpenExternalUrl","userInitiated","dispose","stopLoading","DeunaWebViewController","hidePayButton","redirectUrl","closedAction","isWebViewInitialized","fraudId","userAgent","resolvedWebViewUserAgent","constructor","widgetConfig","trim","init","fraudCredentials","sdkInstance","generateFraudId","getSessionId","execute","getFraudIdFnString","e","console","log","buildSuccessPayload","payload","enrichedPayload","resolvedUserAgent","user_agent","fraud_id","onLoad","setXprops","onFileDownload","onMessage","event","eventData","JSON","parse","nativeEvent","data","mapper","consoleLog","info","stringify","message","eventDispatch","onEventDispatch","requestId","requests","get","delete","openExternalUrl","redirect","closeExternalUrl","onCloseExternalUrl","userAgentResolved","length","type","injectJavaScript","getWidgetState","result","deunaWidgetState","refetchOrder","order","setCustomStyle","style","isValid","submit","status","code","takeScreenshot","imgData","Map","jsCode","Promise","resolve","set"],"sourceRoot":"../../../src","sources":["controllers/BaseWebViewController.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,6 +14,7 @@ export class ExternalUrlHelper {
|
|
|
14
14
|
completer = null;
|
|
15
15
|
lastInAppBrowserSignature = null;
|
|
16
16
|
lastInAppBrowserClosedAt = 0;
|
|
17
|
+
isBrowserActive = false;
|
|
17
18
|
constructor(inAppBrowserAdapter) {
|
|
18
19
|
this.inAppBrowserAdapter = inAppBrowserAdapter;
|
|
19
20
|
this.startCloseChecker();
|
|
@@ -40,7 +41,7 @@ export class ExternalUrlHelper {
|
|
|
40
41
|
*/
|
|
41
42
|
startCloseChecker() {
|
|
42
43
|
AppState.addEventListener('change', state => {
|
|
43
|
-
if (state === 'active' && this.manager?.type === ExternalUrlBrowser.IN_APP_BROWSER) {
|
|
44
|
+
if (state === 'active' && this.manager?.type === ExternalUrlBrowser.IN_APP_BROWSER && !this.isBrowserActive) {
|
|
44
45
|
this.manager = null;
|
|
45
46
|
this.lastInAppBrowserClosedAt = Date.now();
|
|
46
47
|
this.completeClose();
|
|
@@ -55,10 +56,13 @@ export class ExternalUrlHelper {
|
|
|
55
56
|
return url;
|
|
56
57
|
}
|
|
57
58
|
}
|
|
58
|
-
canOpenInAppBrowserUrl(url) {
|
|
59
|
+
canOpenInAppBrowserUrl(url, options) {
|
|
59
60
|
if (this.manager?.type === ExternalUrlBrowser.IN_APP_BROWSER) {
|
|
60
61
|
return false;
|
|
61
62
|
}
|
|
63
|
+
if (options?.bypassReopenGuard) {
|
|
64
|
+
return true;
|
|
65
|
+
}
|
|
62
66
|
const signature = this.getUrlSignature(url);
|
|
63
67
|
const wasSameUrlOpenedRecently = this.lastInAppBrowserSignature === signature && Date.now() - this.lastInAppBrowserClosedAt < ExternalUrlHelper.IN_APP_BROWSER_REOPEN_GUARD_MS;
|
|
64
68
|
return !wasSameUrlOpenedRecently;
|
|
@@ -97,7 +101,9 @@ export class ExternalUrlHelper {
|
|
|
97
101
|
this.manager = {
|
|
98
102
|
type: ExternalUrlBrowser.IN_APP_BROWSER
|
|
99
103
|
};
|
|
104
|
+
this.isBrowserActive = true;
|
|
100
105
|
await this.inAppBrowserAdapter.openUrl(url);
|
|
106
|
+
this.isBrowserActive = false;
|
|
101
107
|
if (Platform.OS === 'ios') {
|
|
102
108
|
this.lastInAppBrowserClosedAt = Date.now();
|
|
103
109
|
this.manager = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["AppState","Platform","ExternalUrlController","Completer","ExternalUrlBrowser","ExternalUrlHelper","IN_APP_BROWSER_REOPEN_GUARD_MS","manager","completer","lastInAppBrowserSignature","lastInAppBrowserClosedAt","constructor","inAppBrowserAdapter","startCloseChecker","externalUrlWebViewController","type","WEB_VIEW","controller","waitForClose","wait","addEventListener","state","IN_APP_BROWSER","Date","now","completeClose","getUrlSignature","url","parsed","URL","host","pathname","canOpenInAppBrowserUrl","signature","wasSameUrlOpenedRecently","resetInAppBrowserReopenGuard","openUrl","params","browser","delegate","mapper","OS","complete","closeWebView","dispose"],"sourceRoot":"../../../src","sources":["helpers/ExternalUrlHelper.ts"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,QAAQ,QAAQ,cAAc;AAEjD,SAASC,qBAAqB,QAAQ,yCAAsC;AAC5E,SAASC,SAAS,QAAQ,gBAAa;AAGvC,WAAYC,kBAAkB,0BAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAlBA,kBAAkB;EAAA,OAAlBA,kBAAkB;AAAA;AAyB9B,OAAO,MAAMC,iBAAiB,CAAC;EAC7B,OAAwBC,8BAA8B,GAAG,IAAI;EAErDC,OAAO,GAAkD,IAAI;EAC7DC,SAAS,GAA2B,IAAI;EACxCC,yBAAyB,GAAkB,IAAI;EAC/CC,wBAAwB,GAAG,CAAC;
|
|
1
|
+
{"version":3,"names":["AppState","Platform","ExternalUrlController","Completer","ExternalUrlBrowser","ExternalUrlHelper","IN_APP_BROWSER_REOPEN_GUARD_MS","manager","completer","lastInAppBrowserSignature","lastInAppBrowserClosedAt","isBrowserActive","constructor","inAppBrowserAdapter","startCloseChecker","externalUrlWebViewController","type","WEB_VIEW","controller","waitForClose","wait","addEventListener","state","IN_APP_BROWSER","Date","now","completeClose","getUrlSignature","url","parsed","URL","host","pathname","canOpenInAppBrowserUrl","options","bypassReopenGuard","signature","wasSameUrlOpenedRecently","resetInAppBrowserReopenGuard","openUrl","params","browser","delegate","mapper","OS","complete","closeWebView","dispose"],"sourceRoot":"../../../src","sources":["helpers/ExternalUrlHelper.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DeunaSDK.d.ts","sourceRoot":"","sources":["../../../../src/DeunaSDK.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAET,YAAY,EACZ,UAAU,EACV,wBAAwB,EACxB,gBAAgB,EAChB,0BAA0B,EAC1B,uBAAuB,EACvB,uBAAuB,EACvB,OAAO,EACP,IAAI,EACJ,sBAAsB,EACtB,YAAY,EACZ,cAAc,EACd,cAAc,EACd,KAAK,EACL,MAAM,EACN,YAAY,EACZ,sBAAsB,EACvB,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EACL,sBAAsB,EACtB,eAAe,EAChB,MAAM,qCAAqC,CAAC;AAI7C,OAAO,EAAgB,IAAI,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AAKxF,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAEL,iBAAiB,EAClB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAGrE,KAAK,uCAAuC,GAAG,gBAAgB,GAAG;IAChE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C,CAAC;AAEF,qBAAa,QAAS,SAAQ,SAAS;IAEnC,QAAQ,CAAC,MAAM,EAAE,uCAAuC;IACxD,QAAQ,CAAC,WAAW,CAAC,GAAE,MAAM,IAAI;gBADxB,MAAM,EAAE,uCAAuC,EAC/C,WAAW,CAAC,GAAE,MAAM,IAAI,aAAA;IAQnC,gBAAgB,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAC9C,cAAc,CAAC,EAAE,YAAY,GAAG,SAAS,CAAC;IAC1C,UAAU,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IACpC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IACnC,cAAc,CAAC,EAAE,cAAc,GAAG,SAAS,CAAC;IAE5C,OAAO,CAAC,SAAS,CAA8B;IAE/C,kBAAkB,yCAAgD;IAClE,iBAAiB,EAAE,iBAAiB,CAAC;IAErC,2BAA2B,EAAE,2BAA2B,GAAG,IAAI,CAAQ;IACvE,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAE7C;;;;OAIG;IACH,YAAY,GAAU,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,OAAO,CAAC,MAAM,CAAC,CAgBlE;IAEF,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,uCAAuC,GAAG,QAAQ;IAI5E;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB,CAWzB;IAEF;;;;OAIG;IACG,iBAAiB,CACrB,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,WAAW,CAAC,GAAG;QAClD,IAAI,CAAC,EAAE,IAAI,CAAC;QACZ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,sBAAsB,GAAG,cAAc,CAAC;KACpD;
|
|
1
|
+
{"version":3,"file":"DeunaSDK.d.ts","sourceRoot":"","sources":["../../../../src/DeunaSDK.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,9 @@ import { ClosedAction, CustomStyles, Json, State, SubmitResult } from '../types'
|
|
|
4
4
|
import { WidgetConfig } from '../interfaces';
|
|
5
5
|
import { ShouldStartLoadRequest } from 'react-native-webview/lib/WebViewTypes';
|
|
6
6
|
export interface WebViewDelegate {
|
|
7
|
-
onOpenExternalUrl?: (url: string
|
|
7
|
+
onOpenExternalUrl?: (url: string, options?: {
|
|
8
|
+
userInitiated?: boolean;
|
|
9
|
+
}) => void;
|
|
8
10
|
onCloseButtonPressed?: () => void;
|
|
9
11
|
onFileDownload?: (url: string) => void;
|
|
10
12
|
onCloseExternalUrl?: () => void;
|
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;AAClB,OAAO,EAAe,YAAY,EAAE,MAAM,eAAe,CAAC;AAE1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAI/E,MAAM,WAAW,eAAe;IAC9B,iBAAiB,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"BaseWebViewController.d.ts","sourceRoot":"","sources":["../../../../../src/controllers/BaseWebViewController.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,6 +26,7 @@ export declare class ExternalUrlHelper {
|
|
|
26
26
|
private completer;
|
|
27
27
|
private lastInAppBrowserSignature;
|
|
28
28
|
private lastInAppBrowserClosedAt;
|
|
29
|
+
private isBrowserActive;
|
|
29
30
|
constructor(inAppBrowserAdapter: InAppBrowserAdapter);
|
|
30
31
|
get externalUrlWebViewController(): ExternalUrlController | null;
|
|
31
32
|
/**
|
|
@@ -37,7 +38,9 @@ export declare class ExternalUrlHelper {
|
|
|
37
38
|
*/
|
|
38
39
|
private startCloseChecker;
|
|
39
40
|
private getUrlSignature;
|
|
40
|
-
canOpenInAppBrowserUrl(url: string
|
|
41
|
+
canOpenInAppBrowserUrl(url: string, options?: {
|
|
42
|
+
bypassReopenGuard?: boolean;
|
|
43
|
+
}): boolean;
|
|
41
44
|
resetInAppBrowserReopenGuard(): void;
|
|
42
45
|
/**
|
|
43
46
|
* Opens the webview or cross platform browser
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExternalUrlHelper.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/ExternalUrlHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,cAAc,mBAAmB;CAClC;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,UAAU,kBAAkB,CAAC,CAAC,SAAS,kBAAkB;IACvD,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,cACf,SAAQ,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACvD,UAAU,EAAE,qBAAqB,CAAC;CACnC;AAED,MAAM,WAAW,mBACf,SAAQ,kBAAkB,CAAC,kBAAkB,CAAC,cAAc,CAAC;IAC7D,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC;CACzC;AAED,qBAAa,iBAAiB;
|
|
1
|
+
{"version":3,"file":"ExternalUrlHelper.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/ExternalUrlHelper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAEtE,oBAAY,kBAAkB;IAC5B,QAAQ,aAAa;IACrB,cAAc,mBAAmB;CAClC;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,eAAe,CAAC;CAC3B;AAED,UAAU,kBAAkB,CAAC,CAAC,SAAS,kBAAkB;IACvD,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,cACf,SAAQ,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC;IACvD,UAAU,EAAE,qBAAqB,CAAC;CACnC;AAED,MAAM,WAAW,mBACf,SAAQ,kBAAkB,CAAC,kBAAkB,CAAC,cAAc,CAAC;IAC7D,IAAI,EAAE,kBAAkB,CAAC,cAAc,CAAC;CACzC;AAED,qBAAa,iBAAiB;IAShB,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB;IAR7D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,8BAA8B,CAAQ;IAE9D,OAAO,CAAC,OAAO,CAAuD;IACtE,OAAO,CAAC,SAAS,CAAgC;IACjD,OAAO,CAAC,yBAAyB,CAAuB;IACxD,OAAO,CAAC,wBAAwB,CAAK;IACrC,OAAO,CAAC,eAAe,CAAS;gBAEX,mBAAmB,EAAE,mBAAmB;IAI7D,IAAI,4BAA4B,iCAK/B;IAED;;OAEG;IACG,YAAY;IAOlB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,eAAe;IASvB,sBAAsB,CACpB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,GACxC,OAAO;IAkBV,4BAA4B,IAAI,IAAI;IAUpC;;OAEG;IACG,OAAO,CAAC,MAAM,EAAE,aAAa;IAgCnC;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACG,YAAY;CAMnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deuna/react-native-sdk",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.5",
|
|
4
4
|
"description": "React Native SDK",
|
|
5
5
|
"source": "./src/index.tsx",
|
|
6
6
|
"react-native": "./src/index.tsx",
|
|
@@ -169,4 +169,4 @@
|
|
|
169
169
|
"type": "library",
|
|
170
170
|
"version": "0.49.8"
|
|
171
171
|
}
|
|
172
|
-
}
|
|
172
|
+
}
|
package/src/DeunaSDK.ts
CHANGED
|
@@ -132,7 +132,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
132
132
|
callbacks: PaymentWidgetCallbacks & OnDownloadFile;
|
|
133
133
|
}
|
|
134
134
|
) {
|
|
135
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
136
135
|
this.setWidgetController({
|
|
137
136
|
controller: buildDeunaWidgetController(this.config, {
|
|
138
137
|
widget: 'payment',
|
|
@@ -156,7 +155,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
156
155
|
fraudCredentials?: Partial<InitFraudProvidersProps>;
|
|
157
156
|
}
|
|
158
157
|
) {
|
|
159
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
160
158
|
this.setWidgetController({
|
|
161
159
|
controller: buildDeunaWidgetController(this.config, {
|
|
162
160
|
widget: 'elements',
|
|
@@ -178,7 +176,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
178
176
|
fraudCredentials?: Partial<InitFraudProvidersProps>;
|
|
179
177
|
}
|
|
180
178
|
) {
|
|
181
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
182
179
|
this.setWidgetController({
|
|
183
180
|
controller: buildDeunaWidgetController(this.config, {
|
|
184
181
|
widget: 'nextAction',
|
|
@@ -201,7 +198,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
201
198
|
callbacks: VoucherWidgetCallbacks & OnDownloadFile;
|
|
202
199
|
}
|
|
203
200
|
) {
|
|
204
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
205
201
|
this.setWidgetController({
|
|
206
202
|
controller: buildDeunaWidgetController(this.config, {
|
|
207
203
|
widget: 'voucher',
|
|
@@ -286,9 +282,6 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
286
282
|
onClosedCallback?.(closedAction);
|
|
287
283
|
} catch (error) {
|
|
288
284
|
console.error('Error closing the widget', error);
|
|
289
|
-
} finally {
|
|
290
|
-
// Releasing the widget must also release in-app browser reopen guard state.
|
|
291
|
-
this.externalUrlHelper.resetInAppBrowserReopenGuard();
|
|
292
285
|
}
|
|
293
286
|
};
|
|
294
287
|
|
|
@@ -331,7 +324,7 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
331
324
|
*/
|
|
332
325
|
buildDelegate = (): WebViewDelegate => {
|
|
333
326
|
return {
|
|
334
|
-
onOpenExternalUrl: (url) => {
|
|
327
|
+
onOpenExternalUrl: (url, options) => {
|
|
335
328
|
try {
|
|
336
329
|
const hostMatch = url.match(/^https?:\/\/([^/?#]+)/i);
|
|
337
330
|
const host = hostMatch?.[1] ?? '';
|
|
@@ -346,7 +339,9 @@ export class DeunaSDK extends BaseDeuna {
|
|
|
346
339
|
|
|
347
340
|
if (
|
|
348
341
|
browser === ExternalUrlBrowser.IN_APP_BROWSER &&
|
|
349
|
-
!this.externalUrlHelper.canOpenInAppBrowserUrl(url
|
|
342
|
+
!this.externalUrlHelper.canOpenInAppBrowserUrl(url, {
|
|
343
|
+
bypassReopenGuard: options?.userInitiated === true,
|
|
344
|
+
})
|
|
350
345
|
) {
|
|
351
346
|
return;
|
|
352
347
|
}
|
|
@@ -15,7 +15,10 @@ import { InitFraudProvidersProps } from '../types/fraudProviders';
|
|
|
15
15
|
import { DeunaSDK } from '../DeunaSDK';
|
|
16
16
|
|
|
17
17
|
export interface WebViewDelegate {
|
|
18
|
-
onOpenExternalUrl?: (
|
|
18
|
+
onOpenExternalUrl?: (
|
|
19
|
+
url: string,
|
|
20
|
+
options?: { userInitiated?: boolean }
|
|
21
|
+
) => void;
|
|
19
22
|
onCloseButtonPressed?: () => void;
|
|
20
23
|
onFileDownload?: (url: string) => void;
|
|
21
24
|
onCloseExternalUrl?: () => void;
|
|
@@ -93,7 +96,9 @@ export abstract class BaseWebViewController {
|
|
|
93
96
|
);
|
|
94
97
|
|
|
95
98
|
if (isNewNavigation && shouldOpenExternally) {
|
|
96
|
-
this.delegate?.onOpenExternalUrl?.(request.url
|
|
99
|
+
this.delegate?.onOpenExternalUrl?.(request.url, {
|
|
100
|
+
userInitiated: request.navigationType === 'click',
|
|
101
|
+
});
|
|
97
102
|
return false;
|
|
98
103
|
}
|
|
99
104
|
|
|
@@ -205,7 +210,9 @@ export abstract class DeunaWebViewController extends BaseWebViewController {
|
|
|
205
210
|
this.jsExecutor.requests.delete(requestId);
|
|
206
211
|
},
|
|
207
212
|
[WebViewEventType.openExternalUrl]: () => {
|
|
208
|
-
this.delegate?.onOpenExternalUrl?.(eventData.url
|
|
213
|
+
this.delegate?.onOpenExternalUrl?.(eventData.url, {
|
|
214
|
+
userInitiated: eventData.userInitiated === true,
|
|
215
|
+
});
|
|
209
216
|
},
|
|
210
217
|
[WebViewEventType.redirect]: () => {
|
|
211
218
|
if (this.redirectUrl) {
|
|
@@ -232,8 +239,16 @@ export abstract class DeunaWebViewController extends BaseWebViewController {
|
|
|
232
239
|
setXprops = () => {
|
|
233
240
|
this.webView?.injectJavaScript(
|
|
234
241
|
`
|
|
242
|
+
window.__deunaLastUserInteractionAt = 0;
|
|
243
|
+
document.addEventListener('pointerdown', function() {
|
|
244
|
+
window.__deunaLastUserInteractionAt = Date.now();
|
|
245
|
+
}, true);
|
|
246
|
+
document.addEventListener('keydown', function() {
|
|
247
|
+
window.__deunaLastUserInteractionAt = Date.now();
|
|
248
|
+
}, true);
|
|
235
249
|
window.open = function(url, target, features) {
|
|
236
|
-
|
|
250
|
+
var isUserInitiated = Date.now() - (window.__deunaLastUserInteractionAt || 0) < 1500;
|
|
251
|
+
window.ReactNativeWebView.postMessage(JSON.stringify({ type: '${WebViewEventType.openExternalUrl}', url, userInitiated: isUserInitiated }));
|
|
237
252
|
};
|
|
238
253
|
window.ReactNativeWebView.postMessage(JSON.stringify({
|
|
239
254
|
type: '${WebViewEventType.userAgentResolved}',
|
|
@@ -36,6 +36,7 @@ export class ExternalUrlHelper {
|
|
|
36
36
|
private completer: Completer<void> | null = null;
|
|
37
37
|
private lastInAppBrowserSignature: string | null = null;
|
|
38
38
|
private lastInAppBrowserClosedAt = 0;
|
|
39
|
+
private isBrowserActive = false;
|
|
39
40
|
|
|
40
41
|
constructor(readonly inAppBrowserAdapter: InAppBrowserAdapter) {
|
|
41
42
|
this.startCloseChecker();
|
|
@@ -65,7 +66,8 @@ export class ExternalUrlHelper {
|
|
|
65
66
|
AppState.addEventListener('change', (state) => {
|
|
66
67
|
if (
|
|
67
68
|
state === 'active' &&
|
|
68
|
-
this.manager?.type === ExternalUrlBrowser.IN_APP_BROWSER
|
|
69
|
+
this.manager?.type === ExternalUrlBrowser.IN_APP_BROWSER &&
|
|
70
|
+
!this.isBrowserActive
|
|
69
71
|
) {
|
|
70
72
|
this.manager = null;
|
|
71
73
|
this.lastInAppBrowserClosedAt = Date.now();
|
|
@@ -83,11 +85,18 @@ export class ExternalUrlHelper {
|
|
|
83
85
|
}
|
|
84
86
|
}
|
|
85
87
|
|
|
86
|
-
canOpenInAppBrowserUrl(
|
|
88
|
+
canOpenInAppBrowserUrl(
|
|
89
|
+
url: string,
|
|
90
|
+
options?: { bypassReopenGuard?: boolean }
|
|
91
|
+
): boolean {
|
|
87
92
|
if (this.manager?.type === ExternalUrlBrowser.IN_APP_BROWSER) {
|
|
88
93
|
return false;
|
|
89
94
|
}
|
|
90
95
|
|
|
96
|
+
if (options?.bypassReopenGuard) {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
|
|
91
100
|
const signature = this.getUrlSignature(url);
|
|
92
101
|
const wasSameUrlOpenedRecently =
|
|
93
102
|
this.lastInAppBrowserSignature === signature &&
|
|
@@ -129,7 +138,9 @@ export class ExternalUrlHelper {
|
|
|
129
138
|
type: ExternalUrlBrowser.IN_APP_BROWSER,
|
|
130
139
|
};
|
|
131
140
|
|
|
141
|
+
this.isBrowserActive = true;
|
|
132
142
|
await this.inAppBrowserAdapter.openUrl(url);
|
|
143
|
+
this.isBrowserActive = false;
|
|
133
144
|
if (Platform.OS === 'ios') {
|
|
134
145
|
this.lastInAppBrowserClosedAt = Date.now();
|
|
135
146
|
this.manager = null;
|
package/CHANGELOG.md
DELETED
|
@@ -1,214 +0,0 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to this project will be documented in this file.
|
|
4
|
-
|
|
5
|
-
## [2.0.3] - 2026-03-26
|
|
6
|
-
|
|
7
|
-
### Fixed
|
|
8
|
-
- Fixed a Mercado Pago redirect regression where reopening the widget could block opening the same in-app browser URL again.
|
|
9
|
-
- Added a reset of the in-app browser reopen guard on each new widget initialization (`payment`, `elements`, `nextAction`, `voucher`) to allow valid retry flows.
|
|
10
|
-
- Kept a 5-second in-app browser reopen guard to prevent immediate redirect loops while preserving reopening behavior across widget sessions.
|
|
11
|
-
- Fixed iOS `WKWebView` warnings (`Error evaluating injectedJavaScript ... unsupported return type`) by making injected JavaScript snippets return a supported value (`true`).
|
|
12
|
-
|
|
13
|
-
## [2.0.2] - 2026-03-25
|
|
14
|
-
|
|
15
|
-
### Added
|
|
16
|
-
- Updated the web sdk types.
|
|
17
|
-
|
|
18
|
-
## [2.0.1] - 2026-02-19
|
|
19
|
-
|
|
20
|
-
### Added
|
|
21
|
-
|
|
22
|
-
- **Added fraud_id & user_agent to the order object in the onSuccess callback**
|
|
23
|
-
|
|
24
|
-
## [2.0.0] - 2026-01-02
|
|
25
|
-
|
|
26
|
-
### 🚨 BREAKING CHANGES
|
|
27
|
-
|
|
28
|
-
This is a **major version** release with breaking changes. Please read the migration guide carefully.
|
|
29
|
-
|
|
30
|
-
#### What's Breaking:
|
|
31
|
-
|
|
32
|
-
1. **Removed `expo-web-browser` dependency** - No longer included as a dependency. Some merchants uses webpack to bundle their apps and `expo-web-browser` is not compatible with webpack and we need to support it.
|
|
33
|
-
2. **New adapter pattern required** - Browser functionality now requires explicit adapter configuration
|
|
34
|
-
3. **API changes** - SDK initialization for merchants that uses Mercado Pago wallet require an adapter configuration to open the redirect url in a custom tab or safari view controller.
|
|
35
|
-
|
|
36
|
-
#### Impact:
|
|
37
|
-
|
|
38
|
-
- **External redirects still work** and open in WebView by default
|
|
39
|
-
- **Payments requiring Custom Tabs/Safari View Controller** (like Mercado Pago wallet) now need custom adapter configuration
|
|
40
|
-
- **In-app browser experience** with native Custom Tabs (Android) or Safari View Controller (iOS) now requires manual setup via adapters
|
|
41
|
-
|
|
42
|
-
### Added
|
|
43
|
-
|
|
44
|
-
- **New Adapter Pattern**: Introduced `InAppBrowserAdapter` interface for customizable browser behavior
|
|
45
|
-
- **DefaultInAppBrowserAdapter**: Default implementation using React Native's `Linking.openURL()`
|
|
46
|
-
- Exported adapter types and implementations from `src/adapters/index.ts`
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## 📋 Migration Guide from 1.x to 2.0.0
|
|
51
|
-
|
|
52
|
-
### Scenario 1: Basic Usage (No Changes Needed)
|
|
53
|
-
|
|
54
|
-
If you don't use any payment method that cannot be rendered in a tradicional webView like Mercado Pago Wallet, no changes are required. Otherwise, you need to configure a custom adapter using the `InAppBrowserAdapter` interface.
|
|
55
|
-
|
|
56
|
-
### Scenario 2: Custom Tabs/Safari View Controller for Specific Payments
|
|
57
|
-
|
|
58
|
-
External redirects work by default and open in WebView. However, some payments (like **Mercado Pago wallet**) require opening in **Custom Tabs (Android)** or **Safari View Controller (iOS)** to function properly. For these cases, you need to configure a custom adapter.
|
|
59
|
-
|
|
60
|
-
#### Expo projects: Using expo-web-browser
|
|
61
|
-
|
|
62
|
-
**1. Install the dependency:**
|
|
63
|
-
|
|
64
|
-
```bash
|
|
65
|
-
npm install expo-web-browser
|
|
66
|
-
# or
|
|
67
|
-
yarn add expo-web-browser
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
**2. Create and use the adapter:**
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
import { WebBrowser } from 'expo-web-browser';
|
|
74
|
-
import { InAppBrowserAdapter, DeunaSDK } from '@deuna/react-native-sdk';
|
|
75
|
-
|
|
76
|
-
class ExpoWebBrowserAdapter implements InAppBrowserAdapter {
|
|
77
|
-
private initialized = false;
|
|
78
|
-
|
|
79
|
-
private async initialize() {
|
|
80
|
-
if (this.initialized) return;
|
|
81
|
-
await WebBrowser.maybeCompleteAuthSession();
|
|
82
|
-
this.initialized = true;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
async openUrl(url: string): Promise<void> {
|
|
86
|
-
try {
|
|
87
|
-
await this.initialize();
|
|
88
|
-
await WebBrowser.openBrowserAsync(url);
|
|
89
|
-
} catch (error) {
|
|
90
|
-
console.error('Error opening browser:', error);
|
|
91
|
-
throw error;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
// Initialize SDK with custom adapter
|
|
97
|
-
const deunaSDK = DeunaSDK.initialize({
|
|
98
|
-
publicApiKey: 'your-public-api-key',
|
|
99
|
-
environment: 'production',
|
|
100
|
-
inAppBrowserAdapter: new ExpoWebBrowserAdapter(),
|
|
101
|
-
});
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
#### React Native CLI projects: Using react-native-inappbrowser-reborn
|
|
105
|
-
|
|
106
|
-
**1. Install the dependency:**
|
|
107
|
-
|
|
108
|
-
```bash
|
|
109
|
-
npm install react-native-inappbrowser-reborn
|
|
110
|
-
# or
|
|
111
|
-
yarn add react-native-inappbrowser-reborn
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
**2. Create and use the adapter:**
|
|
115
|
-
|
|
116
|
-
```typescript
|
|
117
|
-
import InAppBrowser from 'react-native-inappbrowser-reborn';
|
|
118
|
-
import { InAppBrowserAdapter, DeunaSDK } from '@deuna/react-native-sdk';
|
|
119
|
-
|
|
120
|
-
class InAppBrowserRebornAdapter implements InAppBrowserAdapter {
|
|
121
|
-
async openUrl(url: string): Promise<void> {
|
|
122
|
-
try {
|
|
123
|
-
if (await InAppBrowser.isAvailable()) {
|
|
124
|
-
await InAppBrowser.open(url, {
|
|
125
|
-
dismissButtonStyle: 'cancel',
|
|
126
|
-
preferredBarTintColor: '#453AA4',
|
|
127
|
-
preferredControlTintColor: 'white',
|
|
128
|
-
readerMode: false,
|
|
129
|
-
animated: true,
|
|
130
|
-
});
|
|
131
|
-
} else {
|
|
132
|
-
// Fallback to system browser
|
|
133
|
-
await Linking.openURL(url);
|
|
134
|
-
}
|
|
135
|
-
} catch (error) {
|
|
136
|
-
console.error('Error opening in-app browser:', error);
|
|
137
|
-
throw error;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
const deunaSDK = DeunaSDK.initialize({
|
|
143
|
-
publicApiKey: 'your-public-api-key',
|
|
144
|
-
environment: 'production',
|
|
145
|
-
inAppBrowserAdapter: new InAppBrowserRebornAdapter(),
|
|
146
|
-
});
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
> Warning: Currently `react-native-inappbrowser-reborn` is not compatible with "Support 16 KB page sizes" feature of Android 15+ Recommendation. For more information, see [Android 15+ Recommendation](https://developer.android.com/guide/practices/page-sizes). And check [react-native-inappbrowser-reborn](https://github.com/proyecto26/react-native-inappbrowser/issues/483) for more information.
|
|
150
|
-
|
|
151
|
-
### Option C: Using a custom adapter (If you don't want to use expo-web-browser or react-native-inappbrowser-reborn)
|
|
152
|
-
|
|
153
|
-
You can also create your own adapter by implementing the `InAppBrowserAdapter` interface:
|
|
154
|
-
|
|
155
|
-
```typescript
|
|
156
|
-
import { InAppBrowserAdapter, DeunaSDK } from '@deuna/react-native-sdk';
|
|
157
|
-
import { Linking } from 'react-native';
|
|
158
|
-
|
|
159
|
-
class CustomBrowserAdapter implements InAppBrowserAdapter {
|
|
160
|
-
async openUrl(url: string): Promise<void> {
|
|
161
|
-
try {
|
|
162
|
-
// Your custom logic here
|
|
163
|
-
// Example: Add logging, analytics, or custom URL handling
|
|
164
|
-
console.log('Opening URL:', url);
|
|
165
|
-
|
|
166
|
-
// You could integrate with any browser library or custom WebView
|
|
167
|
-
|
|
168
|
-
// Or implement your own WebView modal, etc.
|
|
169
|
-
} catch (error) {
|
|
170
|
-
console.error('Error opening URL:', error);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
|
|
175
|
-
const deunaSDK = DeunaSDK.initialize({
|
|
176
|
-
publicApiKey: 'your-public-api-key',
|
|
177
|
-
environment: 'production',
|
|
178
|
-
inAppBrowserAdapter: new CustomBrowserAdapter(),
|
|
179
|
-
});
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
### Before vs After Comparison
|
|
183
|
-
|
|
184
|
-
**Before (v1.x):**
|
|
185
|
-
|
|
186
|
-
```typescript
|
|
187
|
-
// SDK handled browser opening automatically with expo-web-browser
|
|
188
|
-
const deunaSDK = DeunaSDK.initialize({
|
|
189
|
-
publicApiKey: 'your-public-api-key',
|
|
190
|
-
environment: 'production',
|
|
191
|
-
});
|
|
192
|
-
```
|
|
193
|
-
|
|
194
|
-
> In v1.x, the SDK automatically used `expo-web-browser` internally to open external URLs in Custom Tabs (Android) or Safari View Controller (iOS) when needed.
|
|
195
|
-
|
|
196
|
-
**After (v2.0.0):**
|
|
197
|
-
|
|
198
|
-
```typescript
|
|
199
|
-
// You control how external URLs are opened
|
|
200
|
-
const deunaSDK = DeunaSDK.initialize({
|
|
201
|
-
publicApiKey: 'your-public-api-key',
|
|
202
|
-
environment: 'production',
|
|
203
|
-
inAppBrowserAdapter: new ExpoWebBrowserAdapter(), // Optional, uses default if not provided
|
|
204
|
-
});
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
### Why This Change?
|
|
208
|
-
|
|
209
|
-
- **Metro and Webpack compatibility**: Removed `expo-web-browser` dependency to ensure the SDK works seamlessly with both Metro (React Native) and Webpack bundlers.
|
|
210
|
-
- **Better flexibility**: Choose the browser implementation that works best for your app
|
|
211
|
-
- **Reduced bundle size**: Only include browser dependencies you actually need
|
|
212
|
-
- **Platform compatibility**: Works better with different React Native setups (Expo, bare React Native, etc.)
|
|
213
|
-
- **Build system compatibility**: Eliminates bundler conflicts that could occur with expo-web-browser in non-Expo environments
|
|
214
|
-
- **Future-proof**: Easier to adapt to new browser libraries or custom implementations
|