codevise/pageflow

View on GitHub
entry_types/scrolled/package/src/contentElements/inlineVideo/handlers.js

Summary

Maintainability
A
2 hrs
Test Coverage
export function getLifecycleHandlers(configuration, playerActions) {
  return {
    onVisible() {
      if (configuration.playbackMode === 'loop') {
        playerActions.play();
      }
    },

    onActivate() {
      if (configuration.playbackMode === 'autoplay' ||
          (!configuration.playbackMode && configuration.autoplay)) {
        playerActions.play({via: 'autoplay'});
      }
    },

    onDeactivate() {
      if (configuration.playbackMode !== 'loop') {
        playerActions.fadeOutAndPause(400);
      }
    },

    onInvisible() {
      if (configuration.playbackMode === 'loop') {
        playerActions.fadeOutAndPause(400);
      }
    },
  }
}

export function getPlayerClickHandler({
  configuration,
  playerActions,
  shouldPlay, lastControlledVia,
  mediaMuted,
  isEditable, isSelected
}) {
  if (isEditable && !isSelected) {
    return null;
  }
  else if (configuration.playbackMode === 'loop') {
    if (mediaMuted && !configuration.keepMuted) {
      return () => playerActions.playBlessed();
    }
    else {
      return null;
    }
  }
  else if (configuration.keepMuted) {
    return () => {
      if (shouldPlay) {
        playerActions.pause();
      }
      else {
        playerActions.play();
      }
    };
  }
  else {
    return () => {
      if (shouldPlay && mediaMuted) {
        if (configuration.rewindOnUnmute && lastControlledVia === 'autoplay') {
          playerActions.seekTo(0);
        }

        playerActions.playBlessed();
      }
      else if (shouldPlay) {
        playerActions.pause();
      }
      else {
        playerActions.playBlessed();
      }
    };
  }
}