@dynamic-labs/react-native-extension 4.83.1 → 4.83.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/EmbeddedWebViewController.kt +26 -0
- package/android/EmbeddedWebViewModule.kt +8 -1
- package/android/dynamic/embeddedwebview/EmbeddedWebViewController.kt +26 -0
- package/android/dynamic/embeddedwebview/EmbeddedWebViewModule.kt +8 -1
- package/android/embeddedwebview/EmbeddedWebViewController.kt +26 -0
- package/android/embeddedwebview/EmbeddedWebViewModule.kt +8 -1
- package/android/java/xyz/dynamic/embeddedwebview/EmbeddedWebViewController.kt +26 -0
- package/android/java/xyz/dynamic/embeddedwebview/EmbeddedWebViewModule.kt +8 -1
- package/android/main/java/xyz/dynamic/embeddedwebview/EmbeddedWebViewController.kt +26 -0
- package/android/main/java/xyz/dynamic/embeddedwebview/EmbeddedWebViewModule.kt +8 -1
- package/android/src/main/java/xyz/dynamic/embeddedwebview/EmbeddedWebViewController.kt +26 -0
- package/android/src/main/java/xyz/dynamic/embeddedwebview/EmbeddedWebViewModule.kt +8 -1
- package/android/xyz/dynamic/embeddedwebview/EmbeddedWebViewController.kt +26 -0
- package/android/xyz/dynamic/embeddedwebview/EmbeddedWebViewModule.kt +8 -1
- package/index.cjs +350 -24
- package/index.js +351 -25
- package/ios/EmbeddedWebViewController.swift +22 -0
- package/ios/EmbeddedWebViewModule.swift +8 -1
- package/package.json +6 -6
- package/src/components/WebView/EmbeddedWebView/EmbeddedWebView.d.ts +20 -1
- package/src/components/WebView/EmbeddedWebView/embeddedWebViewPhaseTimers/embeddedWebViewPhaseTimers.d.ts +52 -0
- package/src/components/WebView/EmbeddedWebView/embeddedWebViewPhaseTimers/index.d.ts +1 -0
- package/src/components/WebView/useWebViewPhaseTimers/index.d.ts +1 -0
- package/src/components/WebView/useWebViewPhaseTimers/useWebViewPhaseTimers.d.ts +45 -0
- package/src/nativeModules/EmbeddedWebView.d.ts +27 -2
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { Core } from '@dynamic-labs/client';
|
|
2
|
+
import { WebViewFailedToLoadErrorMeta, WebViewFailedToLoadErrorPhase } from '../../../errors/WebViewFailedToLoadError';
|
|
3
|
+
/**
|
|
4
|
+
* Wire-format `type` of a webview-side `manifest` request.
|
|
5
|
+
*
|
|
6
|
+
* `requestChannel.request('manifest')` sends a `MessageTransportData` whose
|
|
7
|
+
* `type` is the literal request name. The host replies with `manifest__ack`,
|
|
8
|
+
* which we ignore: receiving the request is sufficient evidence that the
|
|
9
|
+
* webview JS bundle is alive and the message bridge works.
|
|
10
|
+
*/
|
|
11
|
+
type WebViewPhaseEvent = 'load_start' | 'load' | 'load_end' | 'native_error' | 'os_kill';
|
|
12
|
+
type UseWebViewPhaseTimersProps = {
|
|
13
|
+
core: Core;
|
|
14
|
+
webViewUrl: URL;
|
|
15
|
+
loadingTimeout: number;
|
|
16
|
+
recoveryTimeout: number;
|
|
17
|
+
};
|
|
18
|
+
export type WebViewPhaseTimers = {
|
|
19
|
+
/**
|
|
20
|
+
* Record a per-attempt lifecycle event. `load_start` resets the
|
|
21
|
+
* per-attempt state (so the timings reflect the current reload), while
|
|
22
|
+
* `native_error` and `os_kill` increment cumulative counters that
|
|
23
|
+
* persist across reloads.
|
|
24
|
+
*/
|
|
25
|
+
recordEvent: (event: WebViewPhaseEvent) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Build the structured meta to attach to {@link WebViewFailedToLoadError}.
|
|
28
|
+
* Pass `phase` explicitly from the callsite (the phase reflects the
|
|
29
|
+
* source of the failure, not just the current timing state).
|
|
30
|
+
*/
|
|
31
|
+
getMeta: (args: {
|
|
32
|
+
phase: WebViewFailedToLoadErrorPhase;
|
|
33
|
+
}) => WebViewFailedToLoadErrorMeta;
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Tracks how long each step of the WebView load took, so when we raise
|
|
37
|
+
* `WebViewFailedToLoadError` we can attach the timings to the error log.
|
|
38
|
+
*
|
|
39
|
+
* The timings cover the host-side phases of the load — the webview-side
|
|
40
|
+
* timings (`webview.time_to_load_manifest`, `webview.time_to_sdk_ready`)
|
|
41
|
+
* still come from the webview itself once it boots, but those don't help
|
|
42
|
+
* when the webview never boots in the first place.
|
|
43
|
+
*/
|
|
44
|
+
export declare const useWebViewPhaseTimers: ({ core, webViewUrl, loadingTimeout, recoveryTimeout, }: UseWebViewPhaseTimersProps) => WebViewPhaseTimers;
|
|
45
|
+
export {};
|
|
@@ -16,7 +16,32 @@ export type EmbeddedWebViewOnLoadErrorEvent = {
|
|
|
16
16
|
description: string;
|
|
17
17
|
isProvisional: boolean;
|
|
18
18
|
};
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Fired when the native webview starts a provisional navigation — the
|
|
21
|
+
* request has been issued but no response bytes have arrived yet.
|
|
22
|
+
* Maps to `WKNavigationDelegate.didStartProvisionalNavigation` on iOS and
|
|
23
|
+
* `WebViewClient.onPageStarted` on Android.
|
|
24
|
+
*/
|
|
25
|
+
export type EmbeddedWebViewOnLoadStartEvent = {
|
|
26
|
+
url: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Fired when the response has committed and the native webview has begun
|
|
30
|
+
* rendering. Maps to `WKNavigationDelegate.didCommit` on iOS and
|
|
31
|
+
* `WebViewClient.onPageCommitVisible` on Android.
|
|
32
|
+
*/
|
|
33
|
+
export type EmbeddedWebViewOnLoadEvent = {
|
|
34
|
+
url: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Fired when the native webview finishes loading the page. Maps to
|
|
38
|
+
* `WKNavigationDelegate.didFinish` on iOS and `WebViewClient.onPageFinished`
|
|
39
|
+
* on Android.
|
|
40
|
+
*/
|
|
41
|
+
export type EmbeddedWebViewOnLoadEndEvent = {
|
|
42
|
+
url: string;
|
|
43
|
+
};
|
|
44
|
+
export type EmbeddedWebViewEventName = 'onMessage' | 'onShouldStartLoad' | 'onLoadError' | 'onLoadStart' | 'onLoad' | 'onLoadEnd';
|
|
20
45
|
export type EmbeddedWebViewNativeModule = {
|
|
21
46
|
setUrl: (url: string) => Promise<void>;
|
|
22
47
|
setVisible: (visible: boolean) => Promise<void>;
|
|
@@ -24,6 +49,6 @@ export type EmbeddedWebViewNativeModule = {
|
|
|
24
49
|
destroy: () => Promise<void>;
|
|
25
50
|
postMessage: (message: string) => Promise<void>;
|
|
26
51
|
respondToShouldStartLoad: (id: string, allow: boolean) => Promise<void>;
|
|
27
|
-
addListener: <T extends EmbeddedWebViewOnMessageEvent | EmbeddedWebViewOnShouldStartLoadEvent | EmbeddedWebViewOnLoadErrorEvent>(eventName: EmbeddedWebViewEventName, listener: (event: T) => void) => EmbeddedWebViewSubscription;
|
|
52
|
+
addListener: <T extends EmbeddedWebViewOnMessageEvent | EmbeddedWebViewOnShouldStartLoadEvent | EmbeddedWebViewOnLoadErrorEvent | EmbeddedWebViewOnLoadStartEvent | EmbeddedWebViewOnLoadEvent | EmbeddedWebViewOnLoadEndEvent>(eventName: EmbeddedWebViewEventName, listener: (event: T) => void) => EmbeddedWebViewSubscription;
|
|
28
53
|
};
|
|
29
54
|
export declare const getEmbeddedWebView: () => EmbeddedWebViewNativeModule;
|