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

Receivers: Fixed idle background hiding video player on error

This commit is contained in:
Michael Hollister 2025-06-12 15:44:30 -05:00
parent fa246a3f08
commit 331391169f

View file

@ -48,17 +48,9 @@ function sendPlaybackUpdate(updateState: PlaybackState) {
function onPlayerLoad(value: PlayMessage) { function onPlayerLoad(value: PlayMessage) {
playerCtrlStateUpdate(PlayerControlEvent.Load); playerCtrlStateUpdate(PlayerControlEvent.Load);
loadingSpinner.style.display = 'none';
if (player.getAutoplay()) { if (player.getAutoplay()) {
if (!supportedAudioTypes.find(v => v === value.container.toLocaleLowerCase())) { setIdleScreenVisible(false, false, value);
idleIcon.style.display = 'none';
idleBackground.style.display = 'none';
}
else {
idleIcon.style.display = 'block';
idleBackground.style.display = 'block';
}
// Subtitles break when seeking post stream initialization for the DASH player. // Subtitles break when seeking post stream initialization for the DASH player.
// Its currently done on player initialization. // Its currently done on player initialization.
@ -87,6 +79,9 @@ function onPlayerLoad(value: PlayMessage) {
window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemStart, cachedPlayMediaItem))); window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemStart, cachedPlayMediaItem)));
player.play(); player.play();
} }
else {
setIdleScreenVisible(true, false, value);
}
} }
// HTML elements // HTML elements
@ -156,10 +151,6 @@ function onPlay(_event, value: PlayMessage) {
logger.info('Media playback changed:', cachedPlayMediaItem); logger.info('Media playback changed:', cachedPlayMediaItem);
playItemCached = false; playItemCached = false;
idleIcon.style.display = 'none';
loadingSpinner.style.display = 'block';
idleBackground.style.display = 'block';
if (player) { if (player) {
if ((player.getSource() === value.url) || (player.getSource() === value.content)) { if ((player.getSource() === value.url) || (player.getSource() === value.content)) {
if (value.time) { if (value.time) {
@ -171,6 +162,7 @@ function onPlay(_event, value: PlayMessage) {
player.destroy(); player.destroy();
} }
setIdleScreenVisible(true, true);
playbackState = PlaybackState.Idle; playbackState = PlaybackState.Idle;
playerPrevTime = 0; playerPrevTime = 0;
lastPlayerUpdateGenerationTime = 0; lastPlayerUpdateGenerationTime = 0;
@ -720,11 +712,20 @@ videoElement.onclick = () => { videoClickedHandler(); };
idleBackground.onclick = () => { videoClickedHandler(); }; idleBackground.onclick = () => { videoClickedHandler(); };
idleIcon.onclick = () => { videoClickedHandler(); }; idleIcon.onclick = () => { videoClickedHandler(); };
function mediaStartHandler(message: PlayMessage) { function setIdleScreenVisible(visible: boolean, loading: boolean = false, message?: PlayMessage) {
if (playbackState === PlaybackState.Idle) { if (visible) {
logger.info('Media playback start:', cachedPlayMediaItem); idleBackground.style.display = 'block';
window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemStart, cachedPlayMediaItem)));
if (loading) {
idleIcon.style.display = 'none';
loadingSpinner.style.display = 'block';
}
else {
idleIcon.style.display = 'block';
loadingSpinner.style.display = 'none';
}
}
else {
if (!supportedAudioTypes.find(v => v === message.container.toLocaleLowerCase())) { if (!supportedAudioTypes.find(v => v === message.container.toLocaleLowerCase())) {
idleIcon.style.display = 'none'; idleIcon.style.display = 'none';
idleBackground.style.display = 'none'; idleBackground.style.display = 'none';
@ -732,7 +733,19 @@ function mediaStartHandler(message: PlayMessage) {
else { else {
idleIcon.style.display = 'block'; idleIcon.style.display = 'block';
idleBackground.style.display = 'block'; idleBackground.style.display = 'block';
} }
loadingSpinner.style.display = 'none';
}
}
function mediaStartHandler(message: PlayMessage) {
if (playbackState === PlaybackState.Idle) {
logger.info('Media playback start:', cachedPlayMediaItem);
window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemStart, cachedPlayMediaItem)));
setIdleScreenVisible(false, false, message)
} }
sendPlaybackUpdate(PlaybackState.Playing); sendPlaybackUpdate(PlaybackState.Playing);
@ -758,8 +771,7 @@ function mediaEndHandler() {
sendPlaybackUpdate(PlaybackState.Idle); sendPlaybackUpdate(PlaybackState.Idle);
window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemEnd, cachedPlayMediaItem))); window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemEnd, cachedPlayMediaItem)));
idleIcon.style.display = 'block'; setIdleScreenVisible(true);
idleBackground.style.display = 'block';
player.setAutoPlay(false); player.setAutoPlay(false);
player.stop(); player.stop();
} }
@ -769,8 +781,7 @@ function mediaEndHandler() {
sendPlaybackUpdate(PlaybackState.Idle); sendPlaybackUpdate(PlaybackState.Idle);
window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemEnd, cachedPlayMediaItem))); window.targetAPI.sendEvent(new EventMessage(Date.now(), new MediaItemEvent(EventType.MediaItemEnd, cachedPlayMediaItem)));
idleIcon.style.display = 'block'; setIdleScreenVisible(true);
idleBackground.style.display = 'block';
player.setAutoPlay(false); player.setAutoPlay(false);
player.stop(); player.stop();
} }