Skip to content

Commit 4dc00c4

Browse files
committed
include API function: getVideoUrl()
1 parent f03a9f9 commit 4dc00c4

File tree

3 files changed

+11
-0
lines changed

3 files changed

+11
-0
lines changed

index.d.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {WebViewProps} from 'react-native-webview';
44

55
export interface YoutubeIframeRef {
66
getDuration: () => Promise<number>;
7+
getVideoUrl: () => Promise<string>;
78
getCurrentTime: () => Promise<number>;
89
isMuted: () => Promise<boolean>;
910
getVolume: () => Promise<number>;

src/PlayerScripts.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@ export const PLAYER_FUNCTIONS = {
55
unMuteVideo: 'player.unMute(); true;',
66
playVideo: 'player.playVideo(); true;',
77
pauseVideo: 'player.pauseVideo(); true;',
8+
getVideoUrlScript: `
9+
window.ReactNativeWebView.postMessage(JSON.stringify({eventType: 'getVideoUrl', data: player.getVideoUrl()}));
10+
true;
11+
`,
812
durationScript: `
913
window.ReactNativeWebView.postMessage(JSON.stringify({eventType: 'getDuration', data: player.getDuration()}));
1014
true;

src/YoutubeIframe.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,12 @@ const YoutubeIframe = (props, ref) => {
4949
useImperativeHandle(
5050
ref,
5151
() => ({
52+
getVideoUrl: () => {
53+
webViewRef.current.injectJavaScript(PLAYER_FUNCTIONS.getVideoUrlScript);
54+
return new Promise(resolve => {
55+
eventEmitter.current.once('getVideoUrl', resolve);
56+
});
57+
},
5258
getDuration: () => {
5359
webViewRef.current.injectJavaScript(PLAYER_FUNCTIONS.durationScript);
5460
return new Promise(resolve => {

0 commit comments

Comments
 (0)