Skip to content

Commit 87d0418

Browse files
committed
feat: send JSON over post-message
1 parent e8f3d2f commit 87d0418

File tree

3 files changed

+61
-36
lines changed

3 files changed

+61
-36
lines changed

iframe.html

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -150,22 +150,28 @@
150150
window.addEventListener('message', function (event) {
151151
const {data} = event;
152152

153-
switch (data) {
154-
case 'playVideo':
155-
player.playVideo();
156-
break;
157-
158-
case 'pauseVideo':
159-
player.pauseVideo();
160-
break;
161-
162-
case 'muteVideo':
163-
player.mute();
164-
break;
165-
166-
case 'unMuteVideo':
167-
player.unMute();
168-
break;
153+
try {
154+
const parsedData = JSON.parse(data);
155+
156+
switch (parsedData.eventName) {
157+
case 'playVideo':
158+
player.playVideo();
159+
break;
160+
161+
case 'pauseVideo':
162+
player.pauseVideo();
163+
break;
164+
165+
case 'muteVideo':
166+
player.mute();
167+
break;
168+
169+
case 'unMuteVideo':
170+
player.unMute();
171+
break;
172+
}
173+
} catch (error) {
174+
console.error('Error parsing data', event, error);
169175
}
170176
});
171177
</script>

src/PlayerScripts.js

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -257,22 +257,28 @@ export const MAIN_SCRIPT = (
257257
window.addEventListener('message', function (event) {
258258
const {data} = event;
259259
260-
switch (data) {
261-
case 'playVideo':
262-
player.playVideo();
263-
break;
264-
265-
case 'pauseVideo':
266-
player.pauseVideo();
267-
break;
268-
269-
case 'muteVideo':
270-
player.mute();
271-
break;
272-
273-
case 'unMuteVideo':
274-
player.unMute();
275-
break;
260+
try {
261+
const parsedData = JSON.parse(data);
262+
263+
switch (parsedData.eventName) {
264+
case 'playVideo':
265+
player.playVideo();
266+
break;
267+
268+
case 'pauseVideo':
269+
player.pauseVideo();
270+
break;
271+
272+
case 'muteVideo':
273+
player.mute();
274+
break;
275+
276+
case 'unMuteVideo':
277+
player.unMute();
278+
break;
279+
}
280+
} catch (error) {
281+
console.error('Error parsing data', event, error);
276282
}
277283
});
278284
</script>

src/YoutubeIframe.js

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,11 @@ const YoutubeIframe = (props, ref) => {
5555
const webViewRef = useRef(null);
5656
const eventEmitter = useRef(new EventEmitter());
5757

58+
const sendPostMessage = useCallback((eventName, meta) => {
59+
const message = JSON.stringify({eventName, meta});
60+
webViewRef.current.postMessage(message);
61+
}, []);
62+
5863
useImperativeHandle(
5964
ref,
6065
() => ({
@@ -119,17 +124,25 @@ const YoutubeIframe = (props, ref) => {
119124
return;
120125
}
121126

122-
webViewRef.current.postMessage(play ? 'playVideo' : 'pauseVideo');
123-
}, [play, playerReady]);
127+
if (play) {
128+
sendPostMessage('playVideo', {});
129+
} else {
130+
sendPostMessage('pauseVideo', {});
131+
}
132+
}, [play, playerReady, sendPostMessage]);
124133

125134
useEffect(() => {
126135
if (!playerReady) {
127136
// no instance of player is ready
128137
return;
129138
}
130139

131-
webViewRef.current.postMessage(mute ? 'muteVideo' : 'unMuteVideo');
132-
}, [mute, playerReady]);
140+
if (mute) {
141+
sendPostMessage('muteVideo', {});
142+
} else {
143+
sendPostMessage('unMuteVideo', {});
144+
}
145+
}, [mute, playerReady, sendPostMessage]);
133146

134147
useEffect(() => {
135148
if (!playerReady) {

0 commit comments

Comments
 (0)