Skip to content

Commit ec48355

Browse files
authored
Merge pull request #28 from GomesLuis479/master
Support for fullscreen change events
2 parents 3714145 + 4925bac commit ec48355

File tree

5 files changed

+27
-0
lines changed

5 files changed

+27
-0
lines changed

doc/readme.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
onChangeState={event => console.log(event)}
1313
onReady={() => console.log("ready")}
1414
onError={e => console.log(e)}
15+
onFullScreenChange={status => console.log(status)}
1516
onPlaybackQualityChange={q => console.log(q)}
1617
volume={50}
1718
playbackRate={1}
@@ -37,6 +38,7 @@
3738
- [onChangeState](#onChangeState)
3839
- [onReady](#onReady)
3940
- [onError](#onError)
41+
- [onFullScreenChange](#onFullScreenChange)
4042
- [onPlaybackQualityChange](#onPlaybackQualityChange)
4143
- [mute](#mute)
4244
- [volume](#volume)
@@ -173,6 +175,14 @@ Possible values are:
173175
| video_not_found | The video requested was not found. This error occurs when a video has been removed (for any reason) or has been marked as private. |
174176
| embed_not_allowed | The owner of the requested video does not allow it to be played in embedded players. |
175177

178+
## onFullScreenChange
179+
180+
**_function(status: boolean)_**
181+
182+
This event fires whenever the fullscreen option is clicked in the player.
183+
184+
The data value that the API passes to the event listener function will be a boolean that identifies the new fullscreen status.
185+
176186
## onPlaybackQualityChange
177187

178188
**_function(quality: string)_**

index.d.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ export interface YoutubeIframeProps {
9292
* callback for when the player's state changes.
9393
*/
9494
onChangeState?: (event: String) => void;
95+
/**
96+
* callback for when the fullscreen option is clicked in the player. It signals the new fullscreen state of the player.
97+
*/
98+
onFullScreenChange?: (status: Boolean) => void;
9599
/**
96100
* callback for when the video playback quality changes. It might signal a change in the viewer's playback environment.
97101
*/

readme.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ const [playing, setPlaying] = useState(true);
5454
onChangeState={event => console.log(event)}
5555
onReady={() => console.log("ready")}
5656
onError={e => console.log(e)}
57+
onFullScreenChange={status => console.log(status)}
5758
onPlaybackQualityChange={q => console.log(q)}
5859
volume={50}
5960
playbackRate={1}
@@ -79,6 +80,7 @@ list of available APIs -
7980
- onChangeState
8081
- onReady
8182
- onError
83+
- onFullScreenChange
8284
- onPlaybackQualityChange
8385
- mute
8486
- volume

src/PlayerScripts.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,11 @@ export const MAIN_SCRIPT = (
9898
var firstScriptTag = document.getElementsByTagName('script')[0];
9999
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
100100
101+
var isFullScreen = false;
102+
function onFullScreenChange() {
103+
isFullScreen = !isFullScreen;
104+
window.ReactNativeWebView.postMessage(JSON.stringify({eventType: 'fullScreenChange', data: isFullScreen}));
105+
}
101106
102107
var player;
103108
function onYouTubeIframeAPIReady() {
@@ -130,6 +135,8 @@ export const MAIN_SCRIPT = (
130135
'onPlaybackRateChange': onPlaybackRateChange,
131136
}
132137
});
138+
139+
document.getElementById('player').addEventListener('webkitfullscreenchange', onFullScreenChange);
133140
}
134141
135142
function onPlayerError(event) {

src/YoutubeIframe.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ const YoutubeIframe = (
3131
allowWebViewZoom = false,
3232
forceAndroidAutoplay = false,
3333
onChangeState = _event => {},
34+
onFullScreenChange = _status => {},
3435
onPlaybackQualityChange = _quality => {},
3536
onPlaybackRateChange = _playbackRate => {},
3637
},
@@ -117,6 +118,9 @@ const YoutubeIframe = (
117118
const message = JSON.parse(event.nativeEvent.data);
118119
try {
119120
switch (message.eventType) {
121+
case 'fullScreenChange':
122+
onFullScreenChange(message.data);
123+
break;
120124
case 'playerStateChange':
121125
onChangeState(PLAYER_STATES[message.data]);
122126
break;

0 commit comments

Comments
 (0)