codevise/pageflow

View on GitHub
entry_types/scrolled/package/src/frontend/MediaPlayer/updatePlayerState.js

Summary

Maintainability
A
2 hrs
Test Coverage
export function updatePlayerState(player, prevPlayerState, playerState, playerActions){
  if (!prevPlayerState.shouldPrebuffer && playerState.shouldPrebuffer) {
    player.prebuffer().then(() => setTimeout(playerActions.prebuffered, 0));
  }

  if (!prevPlayerState.shouldPlay && playerState.shouldPlay) {
    if (playerState.fadeDuration) {
      player.playAndFadeIn(playerState.fadeDuration);
    }
    else {
      player.playOrPlayOnLoad();
    }
  }
  else if (prevPlayerState.shouldPlay && !playerState.shouldPlay && playerState.isPlaying) {
    if (playerState.fadeDuration && !player.muted()) {
      player.fadeOutAndPause(playerState.fadeDuration);
    }
    else {
      player.pause();
    }
  }

  if (playerState.shouldSeekTo !== undefined && prevPlayerState.shouldSeekTo !== playerState.shouldSeekTo ) {
    player.currentTime(playerState.shouldSeekTo);
  }

  if (prevPlayerState.volumeFactor !== playerState.volumeFactor ) {
    player.changeVolumeFactor(playerState.volumeFactor, playerState.volumeFactorFadeDuration);
  }
}