@dynamic-labs/react-native-extension 4.11.1 → 4.11.2
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/index.cjs +33 -2
- package/index.js +33 -2
- package/package.json +5 -5
package/index.cjs
CHANGED
|
@@ -6,15 +6,15 @@ var assertPackageVersion = require('@dynamic-labs/assert-package-version');
|
|
|
6
6
|
var reactNative = require('react-native');
|
|
7
7
|
var react = require('react');
|
|
8
8
|
var reactNativeWebview = require('react-native-webview');
|
|
9
|
-
var messageTransport = require('@dynamic-labs/message-transport');
|
|
10
9
|
var logger$1 = require('@dynamic-labs/logger');
|
|
10
|
+
var messageTransport = require('@dynamic-labs/message-transport');
|
|
11
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
12
|
var reactNativePasskeyStamper = require('@turnkey/react-native-passkey-stamper');
|
|
13
13
|
var expoLinking = require('expo-linking');
|
|
14
14
|
var expoWebBrowser = require('expo-web-browser');
|
|
15
15
|
var expoSecureStore = require('expo-secure-store');
|
|
16
16
|
|
|
17
|
-
var version = "4.11.
|
|
17
|
+
var version = "4.11.2";
|
|
18
18
|
|
|
19
19
|
function _extends() {
|
|
20
20
|
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
@@ -136,6 +136,15 @@ const WebView = ({
|
|
|
136
136
|
onMessageHandler
|
|
137
137
|
} = useMessageTransportWebViewBridge(core, webViewRef);
|
|
138
138
|
const containerStyles = [styles['container'], visible ? styles.show : styles.hide];
|
|
139
|
+
/**
|
|
140
|
+
* Block the message transport when the webview is unmounted
|
|
141
|
+
*/
|
|
142
|
+
react.useEffect(() => () => {
|
|
143
|
+
logger.warn(unmountWebViewWarningMessage);
|
|
144
|
+
core.messageTransport.block();
|
|
145
|
+
},
|
|
146
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- we only care about the unmount callback
|
|
147
|
+
[]);
|
|
139
148
|
return /*#__PURE__*/jsxRuntime.jsx(reactNativeWebview.WebView, {
|
|
140
149
|
ref: webViewRef,
|
|
141
150
|
source: {
|
|
@@ -146,6 +155,19 @@ const WebView = ({
|
|
|
146
155
|
onMessage: onMessageHandler,
|
|
147
156
|
hideKeyboardAccessoryView: true,
|
|
148
157
|
webviewDebuggingEnabled: _webviewDebuggingEnabled,
|
|
158
|
+
onContentProcessDidTerminate: () => {
|
|
159
|
+
var _a;
|
|
160
|
+
/**
|
|
161
|
+
* iOS and Android both may trigger this event when the webview
|
|
162
|
+
* is removed due to memory pressure.
|
|
163
|
+
*
|
|
164
|
+
* When the webview is killed by the OS, the message transport must
|
|
165
|
+
* be blocked to prevent the "No handlers registered" error while
|
|
166
|
+
* the webview is reloading
|
|
167
|
+
*/
|
|
168
|
+
core.messageTransport.block();
|
|
169
|
+
(_a = webViewRef.current) === null || _a === void 0 ? void 0 : _a.reload();
|
|
170
|
+
},
|
|
149
171
|
onError: () => core.initialization.error = new Error('Could not load Dynamic WebView')
|
|
150
172
|
}, 'webview');
|
|
151
173
|
};
|
|
@@ -153,6 +175,15 @@ const createWebView = props => {
|
|
|
153
175
|
const WebViewWrapper = () => /*#__PURE__*/jsxRuntime.jsx(WebView, _extends({}, props));
|
|
154
176
|
return WebViewWrapper;
|
|
155
177
|
};
|
|
178
|
+
const unmountWebViewWarningMessage = `WebView unmounted.
|
|
179
|
+
|
|
180
|
+
The Dynamic WebView may malfunction if it is unmounted.
|
|
181
|
+
|
|
182
|
+
Render the WebView at the top level of your component tree to ensure it is not unmounted.
|
|
183
|
+
|
|
184
|
+
For more information, please refer to the documentation:
|
|
185
|
+
https://docs.dynamic.xyz/react-native/react-native-extension
|
|
186
|
+
`;
|
|
156
187
|
|
|
157
188
|
/******************************************************************************
|
|
158
189
|
Copyright (c) Microsoft Corporation.
|
package/index.js
CHANGED
|
@@ -2,15 +2,15 @@ import { assertPackageVersion } from '@dynamic-labs/assert-package-version';
|
|
|
2
2
|
import { StyleSheet, Platform } from 'react-native';
|
|
3
3
|
import { useRef, useEffect, useCallback, useState } from 'react';
|
|
4
4
|
import { WebView as WebView$1 } from 'react-native-webview';
|
|
5
|
-
import { parseMessageTransportData, createRequestChannel } from '@dynamic-labs/message-transport';
|
|
6
5
|
import { Logger } from '@dynamic-labs/logger';
|
|
6
|
+
import { parseMessageTransportData, createRequestChannel } from '@dynamic-labs/message-transport';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
8
8
|
import { createPasskey, PasskeyStamper } from '@turnkey/react-native-passkey-stamper';
|
|
9
9
|
import { createURL, openURL } from 'expo-linking';
|
|
10
10
|
import { openAuthSessionAsync } from 'expo-web-browser';
|
|
11
11
|
import { getItemAsync, deleteItemAsync, setItemAsync } from 'expo-secure-store';
|
|
12
12
|
|
|
13
|
-
var version = "4.11.
|
|
13
|
+
var version = "4.11.2";
|
|
14
14
|
|
|
15
15
|
function _extends() {
|
|
16
16
|
return _extends = Object.assign ? Object.assign.bind() : function (n) {
|
|
@@ -132,6 +132,15 @@ const WebView = ({
|
|
|
132
132
|
onMessageHandler
|
|
133
133
|
} = useMessageTransportWebViewBridge(core, webViewRef);
|
|
134
134
|
const containerStyles = [styles['container'], visible ? styles.show : styles.hide];
|
|
135
|
+
/**
|
|
136
|
+
* Block the message transport when the webview is unmounted
|
|
137
|
+
*/
|
|
138
|
+
useEffect(() => () => {
|
|
139
|
+
logger.warn(unmountWebViewWarningMessage);
|
|
140
|
+
core.messageTransport.block();
|
|
141
|
+
},
|
|
142
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps -- we only care about the unmount callback
|
|
143
|
+
[]);
|
|
135
144
|
return /*#__PURE__*/jsx(WebView$1, {
|
|
136
145
|
ref: webViewRef,
|
|
137
146
|
source: {
|
|
@@ -142,6 +151,19 @@ const WebView = ({
|
|
|
142
151
|
onMessage: onMessageHandler,
|
|
143
152
|
hideKeyboardAccessoryView: true,
|
|
144
153
|
webviewDebuggingEnabled: _webviewDebuggingEnabled,
|
|
154
|
+
onContentProcessDidTerminate: () => {
|
|
155
|
+
var _a;
|
|
156
|
+
/**
|
|
157
|
+
* iOS and Android both may trigger this event when the webview
|
|
158
|
+
* is removed due to memory pressure.
|
|
159
|
+
*
|
|
160
|
+
* When the webview is killed by the OS, the message transport must
|
|
161
|
+
* be blocked to prevent the "No handlers registered" error while
|
|
162
|
+
* the webview is reloading
|
|
163
|
+
*/
|
|
164
|
+
core.messageTransport.block();
|
|
165
|
+
(_a = webViewRef.current) === null || _a === void 0 ? void 0 : _a.reload();
|
|
166
|
+
},
|
|
145
167
|
onError: () => core.initialization.error = new Error('Could not load Dynamic WebView')
|
|
146
168
|
}, 'webview');
|
|
147
169
|
};
|
|
@@ -149,6 +171,15 @@ const createWebView = props => {
|
|
|
149
171
|
const WebViewWrapper = () => /*#__PURE__*/jsx(WebView, _extends({}, props));
|
|
150
172
|
return WebViewWrapper;
|
|
151
173
|
};
|
|
174
|
+
const unmountWebViewWarningMessage = `WebView unmounted.
|
|
175
|
+
|
|
176
|
+
The Dynamic WebView may malfunction if it is unmounted.
|
|
177
|
+
|
|
178
|
+
Render the WebView at the top level of your component tree to ensure it is not unmounted.
|
|
179
|
+
|
|
180
|
+
For more information, please refer to the documentation:
|
|
181
|
+
https://docs.dynamic.xyz/react-native/react-native-extension
|
|
182
|
+
`;
|
|
152
183
|
|
|
153
184
|
/******************************************************************************
|
|
154
185
|
Copyright (c) Microsoft Corporation.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dynamic-labs/react-native-extension",
|
|
3
|
-
"version": "4.11.
|
|
3
|
+
"version": "4.11.2",
|
|
4
4
|
"main": "./index.cjs",
|
|
5
5
|
"module": "./index.js",
|
|
6
6
|
"types": "./src/index.d.ts",
|
|
@@ -15,10 +15,10 @@
|
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@turnkey/react-native-passkey-stamper": "0.2.15",
|
|
18
|
-
"@dynamic-labs/assert-package-version": "4.11.
|
|
19
|
-
"@dynamic-labs/client": "4.11.
|
|
20
|
-
"@dynamic-labs/logger": "4.11.
|
|
21
|
-
"@dynamic-labs/message-transport": "4.11.
|
|
18
|
+
"@dynamic-labs/assert-package-version": "4.11.2",
|
|
19
|
+
"@dynamic-labs/client": "4.11.2",
|
|
20
|
+
"@dynamic-labs/logger": "4.11.2",
|
|
21
|
+
"@dynamic-labs/message-transport": "4.11.2"
|
|
22
22
|
},
|
|
23
23
|
"peerDependencies": {
|
|
24
24
|
"react": "^18.2.0",
|