1
0
Fork 0
mirror of https://gitlab.com/futo-org/fcast.git synced 2025-06-24 21:25:23 +00:00

Refractoring out non-UI update logic

This commit is contained in:
Michael Hollister 2024-11-13 00:10:07 -06:00
parent 359acfd09e
commit 0ee727a914

View file

@ -58,7 +58,7 @@ function onPlayerLoad(value: PlayMessage, currentPlaybackRate?: number, currentV
window.electronAPI.sendVolumeUpdate({ generationTime: Date.now(), volume: 1.0 }); window.electronAPI.sendVolumeUpdate({ generationTime: Date.now(), volume: 1.0 });
} }
playerCtrlStateUpdate(PlayerControlEvent.Play); player.play();
} }
// HTML elements // HTML elements
@ -150,8 +150,8 @@ window.electronAPI.onPlay((_event, value: PlayMessage) => {
}, true); }, true);
// Player event handlers // Player event handlers
dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_PLAYING, () => { sendPlaybackUpdate(1) }); dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_PLAYING, () => { sendPlaybackUpdate(1); playerCtrlStateUpdate(PlayerControlEvent.Play); });
dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_PAUSED, () => { sendPlaybackUpdate(2) }); dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_PAUSED, () => { sendPlaybackUpdate(2); playerCtrlStateUpdate(PlayerControlEvent.Pause); });
dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_ENDED, () => { sendPlaybackUpdate(0) }); dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_ENDED, () => { sendPlaybackUpdate(0) });
dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_TIME_UPDATED, () => { dashPlayer.on(dashjs.MediaPlayer.events.PLAYBACK_TIME_UPDATED, () => {
playerCtrlStateUpdate(PlayerControlEvent.TimeUpdate); playerCtrlStateUpdate(PlayerControlEvent.TimeUpdate);
@ -254,8 +254,8 @@ window.electronAPI.onPlay((_event, value: PlayMessage) => {
// Player event handlers // Player event handlers
if (player.playerType === PlayerType.Hls || player.playerType === PlayerType.Html) { if (player.playerType === PlayerType.Hls || player.playerType === PlayerType.Html) {
videoElement.onplay = () => { sendPlaybackUpdate(1) }; videoElement.onplay = () => { sendPlaybackUpdate(1); playerCtrlStateUpdate(PlayerControlEvent.Play); };
videoElement.onpause = () => { sendPlaybackUpdate(2) }; videoElement.onpause = () => { sendPlaybackUpdate(2); playerCtrlStateUpdate(PlayerControlEvent.Pause); };
videoElement.onended = () => { sendPlaybackUpdate(0) }; videoElement.onended = () => { sendPlaybackUpdate(0) };
videoElement.ontimeupdate = () => { videoElement.ontimeupdate = () => {
playerCtrlStateUpdate(PlayerControlEvent.TimeUpdate); playerCtrlStateUpdate(PlayerControlEvent.TimeUpdate);
@ -283,8 +283,8 @@ window.electronAPI.onPlay((_event, value: PlayMessage) => {
} }
// Sender generated event handlers // Sender generated event handlers
window.electronAPI.onPause(() => { playerCtrlStateUpdate(PlayerControlEvent.Pause); }); window.electronAPI.onPause(() => { player.pause(); });
window.electronAPI.onResume(() => { playerCtrlStateUpdate(PlayerControlEvent.Play); }); window.electronAPI.onResume(() => { player.play(); });
window.electronAPI.onSeek((_event, value: SeekMessage) => { player.setCurrentTime(value.time); }); window.electronAPI.onSeek((_event, value: SeekMessage) => { player.setCurrentTime(value.time); });
window.electronAPI.onSetVolume((_event, value: SetVolumeMessage) => { volumeChangeHandler(value.volume); }); window.electronAPI.onSetVolume((_event, value: SetVolumeMessage) => { volumeChangeHandler(value.volume); });
window.electronAPI.onSetSpeed((_event, value: SetSpeedMessage) => { player.setPlaybackRate(value.speed); playerCtrlStateUpdate(PlayerControlEvent.SetPlaybackRate); }); window.electronAPI.onSetSpeed((_event, value: SetSpeedMessage) => { player.setPlaybackRate(value.speed); playerCtrlStateUpdate(PlayerControlEvent.SetPlaybackRate); });
@ -297,7 +297,6 @@ enum PlayerControlEvent {
Load, Load,
Pause, Pause,
Play, Play,
ToggleMute,
VolumeChange, VolumeChange,
TimeUpdate, TimeUpdate,
UiFadeOut, UiFadeOut,
@ -348,21 +347,13 @@ function playerCtrlStateUpdate(event: PlayerControlEvent) {
case PlayerControlEvent.Pause: case PlayerControlEvent.Pause:
playerCtrlAction.setAttribute("class", "play"); playerCtrlAction.setAttribute("class", "play");
stopUiHideTimer(); stopUiHideTimer();
player.pause();
break; break;
case PlayerControlEvent.Play: case PlayerControlEvent.Play:
playerCtrlAction.setAttribute("class", "pause"); playerCtrlAction.setAttribute("class", "pause");
startUiHideTimer(); startUiHideTimer();
player.play();
break; break;
case PlayerControlEvent.ToggleMute: {
// console.log(`ToggleMute: isMute ${player.isMuted()}, volume: ${player.getVolume()}`);
player.setMute(!player.isMuted());
break;
}
case PlayerControlEvent.VolumeChange: { case PlayerControlEvent.VolumeChange: {
// console.log(`VolumeChange: isMute ${player.isMuted()}, volume: ${player.getVolume()}`); // console.log(`VolumeChange: isMute ${player.isMuted()}, volume: ${player.getVolume()}`);
const volume = Math.round(player.getVolume() * playerCtrlVolumeBar.offsetWidth); const volume = Math.round(player.getVolume() * playerCtrlVolumeBar.offsetWidth);
@ -512,13 +503,13 @@ function scrubbingMouseUIHandler(e: MouseEvent) {
// Receiver generated event handlers // Receiver generated event handlers
playerCtrlAction.onclick = () => { playerCtrlAction.onclick = () => {
if (player.isPaused()) { if (player.isPaused()) {
playerCtrlStateUpdate(PlayerControlEvent.Play); player.play();
} else { } else {
playerCtrlStateUpdate(PlayerControlEvent.Pause); player.pause();
} }
}; };
playerCtrlVolume.onclick = () => { playerCtrlStateUpdate(PlayerControlEvent.ToggleMute); }; playerCtrlVolume.onclick = () => { player.setMute(!player.isMuted()); };
PlayerCtrlProgressBarInteractiveArea.onmousedown = (e: MouseEvent) => { scrubbing = true; scrubbingMouseHandler(e) }; PlayerCtrlProgressBarInteractiveArea.onmousedown = (e: MouseEvent) => { scrubbing = true; scrubbingMouseHandler(e) };
PlayerCtrlProgressBarInteractiveArea.onmouseup = () => { scrubbing = false; }; PlayerCtrlProgressBarInteractiveArea.onmouseup = () => { scrubbing = false; };
@ -593,7 +584,7 @@ function setLivePosition() {
playerCtrlLiveBadge.setAttribute("style", `background-color: red`); playerCtrlLiveBadge.setAttribute("style", `background-color: red`);
if (player.isPaused()) { if (player.isPaused()) {
playerCtrlStateUpdate(PlayerControlEvent.Play); player.play();
} }
} }
} }
@ -614,9 +605,9 @@ playbackRates.forEach(r => {
videoElement.onclick = () => { videoElement.onclick = () => {
if (!playerCtrlSpeedMenuShown) { if (!playerCtrlSpeedMenuShown) {
if (player.isPaused()) { if (player.isPaused()) {
playerCtrlStateUpdate(PlayerControlEvent.Play); player.play();
} else { } else {
playerCtrlStateUpdate(PlayerControlEvent.Pause); player.pause();
} }
} }
}; };
@ -710,15 +701,15 @@ document.addEventListener('keydown', (event) => {
case 'Enter': case 'Enter':
// Pause/Continue // Pause/Continue
if (player.isPaused()) { if (player.isPaused()) {
playerCtrlStateUpdate(PlayerControlEvent.Play); player.play();
} else { } else {
playerCtrlStateUpdate(PlayerControlEvent.Pause); player.pause();
} }
event.preventDefault(); event.preventDefault();
break; break;
case 'KeyM': case 'KeyM':
// Mute toggle // Mute toggle
playerCtrlStateUpdate(PlayerControlEvent.ToggleMute); player.setMute(!player.isMuted());
break; break;
case 'ArrowUp': case 'ArrowUp':
// Volume up // Volume up