From 7405b743179a36504969d7801aa6f365549f40fd Mon Sep 17 00:00:00 2001 From: R-J Lim Date: Sun, 25 Aug 2024 07:28:21 +0900 Subject: [PATCH] Fix yomitan hiding causing the video player to exit fullscreen --- common/app/components/App.tsx | 4 ---- common/app/components/Player.tsx | 3 --- common/app/components/VideoPlayer.tsx | 22 +++++++++------------- common/app/services/player-channel.ts | 4 ---- common/app/services/video-channel.ts | 13 ------------- 5 files changed, 9 insertions(+), 37 deletions(-) diff --git a/common/app/components/App.tsx b/common/app/components/App.tsx index 409ea615..3c9eb838 100755 --- a/common/app/components/App.tsx +++ b/common/app/components/App.tsx @@ -479,9 +479,6 @@ function App({ origin, logoUrl, settings, extension, fetcher, onSettingsChanged, setTheaterMode(newValue); setVideoFullscreen(false); }, [playbackPreferences]); - const handleFullscreenToggle = useCallback(() => { - setVideoFullscreen((fullscreen) => !fullscreen); - }, []); useEffect(() => { if (videoFullscreen) { if (!document.fullscreenElement) { @@ -1263,7 +1260,6 @@ function App({ origin, logoUrl, settings, extension, fetcher, onSettingsChanged, onAnkiDialogRequest={handleAnkiDialogRequest} onAnkiDialogRewind={handleAnkiDialogRewind} onAppBarToggle={handleAppBarToggle} - onFullscreenToggle={handleFullscreenToggle} onHideSubtitlePlayer={handleHideSubtitlePlayer} onVideoPopOut={handleVideoPopOut} onPlayModeChangedViaBind={handleAutoPauseModeChangedViaBind} diff --git a/common/app/components/Player.tsx b/common/app/components/Player.tsx index 66ecf78e..e72eb3df 100755 --- a/common/app/components/Player.tsx +++ b/common/app/components/Player.tsx @@ -114,7 +114,6 @@ interface PlayerProps { onAnkiDialogRequest: () => void; onAnkiDialogRewind: () => void; onAppBarToggle: () => void; - onFullscreenToggle: () => void; onHideSubtitlePlayer: () => void; onVideoPopOut: () => void; onPlayModeChangedViaBind: (oldPlayMode: PlayMode, newPlayMode: PlayMode) => void; @@ -156,7 +155,6 @@ const Player = React.memo(function Player({ onAnkiDialogRequest, onAnkiDialogRewind, onAppBarToggle, - onFullscreenToggle, onHideSubtitlePlayer, onVideoPopOut, onPlayModeChangedViaBind, @@ -407,7 +405,6 @@ const Player = React.memo(function Player({ useEffect(() => channel?.onPopOutToggle(() => onVideoPopOut()), [channel, onVideoPopOut]); useEffect(() => channel?.onHideSubtitlePlayerToggle(onHideSubtitlePlayer), [channel, onHideSubtitlePlayer]); useEffect(() => channel?.onAppBarToggle(onAppBarToggle), [channel, onAppBarToggle]); - useEffect(() => channel?.onFullscreenToggle(onFullscreenToggle), [channel, onFullscreenToggle]); useEffect( () => channel?.onReady(() => { diff --git a/common/app/components/VideoPlayer.tsx b/common/app/components/VideoPlayer.tsx index 6a28ac2a..9abdc870 100755 --- a/common/app/components/VideoPlayer.tsx +++ b/common/app/components/VideoPlayer.tsx @@ -1170,20 +1170,16 @@ export default function VideoPlayer({ }, [displaySubtitles, playbackPreferences]); const handleFullscreenToggle = useCallback(() => { - if (popOut) { - setFullscreen((fullscreen) => { - if (fullscreen) { - document.exitFullscreen(); - } else { - document.documentElement.requestFullscreen(); - } + setFullscreen((fullscreen) => { + if (fullscreen) { + document.exitFullscreen(); + } else { + document.documentElement.requestFullscreen(); + } - return !fullscreen; - }); - } else { - playerChannel.fullscreenToggle(); - } - }, [playerChannel, popOut]); + return !fullscreen; + }); + }, []); const handleVolumeChange = useCallback((volume: number) => { if (videoRef.current) { diff --git a/common/app/services/player-channel.ts b/common/app/services/player-channel.ts index 0b33ac1b..9bbb2c30 100755 --- a/common/app/services/player-channel.ts +++ b/common/app/services/player-channel.ts @@ -408,10 +408,6 @@ export default class PlayerChannel { this.channel?.postMessage({ command: 'appBarToggle' }); } - fullscreenToggle() { - this.channel?.postMessage({ command: 'fullscreenToggle' }); - } - toggleSubtitleTrackInList(track: number) { const message: ToggleSubtitleTrackInListFromVideoMessage = { command: 'toggleSubtitleTrackInList', diff --git a/common/app/services/video-channel.ts b/common/app/services/video-channel.ts index 358316da..600992ec 100755 --- a/common/app/services/video-channel.ts +++ b/common/app/services/video-channel.ts @@ -63,7 +63,6 @@ export default class VideoChannel { private playModeCallbacks: ((mode: PlayMode) => void)[]; private hideSubtitlePlayerToggleCallbacks: (() => void)[]; private appBarToggleCallbacks: (() => void)[]; - private fullscreenToggleCallbacks: (() => void)[]; private ankiDialogRequestCallbacks: (() => void)[]; private toggleSubtitleTrackInListCallbacks: ((track: number) => void)[]; @@ -95,7 +94,6 @@ export default class VideoChannel { this.playModeCallbacks = []; this.hideSubtitlePlayerToggleCallbacks = []; this.appBarToggleCallbacks = []; - this.fullscreenToggleCallbacks = []; this.ankiDialogRequestCallbacks = []; this.toggleSubtitleTrackInListCallbacks = []; @@ -212,11 +210,6 @@ export default class VideoChannel { callback(); } break; - case 'fullscreenToggle': - for (const callback of this.fullscreenToggleCallbacks) { - callback(); - } - break; case 'sync': // ignore break; @@ -341,11 +334,6 @@ export default class VideoChannel { return () => this._remove(callback, this.appBarToggleCallbacks); } - onFullscreenToggle(callback: () => void) { - this.fullscreenToggleCallbacks.push(callback); - return () => this._remove(callback, this.fullscreenToggleCallbacks); - } - onAnkiDialogRequest(callback: () => void) { this.ankiDialogRequestCallbacks.push(callback); return () => this._remove(callback, this.ankiDialogRequestCallbacks); @@ -621,7 +609,6 @@ export default class VideoChannel { this.playModeCallbacks = []; this.hideSubtitlePlayerToggleCallbacks = []; this.appBarToggleCallbacks = []; - this.fullscreenToggleCallbacks = []; this.ankiDialogRequestCallbacks = []; this.toggleSubtitleTrackInListCallbacks = []; }