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:
parent
fa246a3f08
commit
331391169f
1 changed files with 32 additions and 21 deletions
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue