src/app/components/MediaLoader/configs/tv.ts

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import filterForBlockType from '#lib/utilities/blockHandlers';
import { ConfigBuilderProps, ConfigBuilderReturnProps } from '../types';
import buildPlaceholderConfig from '../utils/buildPlaceholderConfig';

export default ({
  blocks,
  basePlayerConfig,
  translations,
}: ConfigBuilderProps): ConfigBuilderReturnProps => {
  const { model: tvMediaBlock } = filterForBlockType(blocks, 'tv');
  const { model: mediaOverrides } =
    filterForBlockType(blocks, 'mediaOverrides') || {};
  const video = tvMediaBlock?.versions?.[0] || {};
  const holdingImageURL = `https://${tvMediaBlock.imageUrl}`;

  const placeholderConfig = buildPlaceholderConfig({
    title: tvMediaBlock.episodeTitle,
    duration: video?.duration,
    durationISO8601: video?.durationISO8601,
    type: 'video',
    holdingImageURL,
    placeholderImageLocator: holdingImageURL,
    placeholderImageOriginCode: 'pips',
    translations,
  });

  return {
    playerConfig: {
      ...basePlayerConfig,
      autoplay: false,
      statsObject: {
        ...basePlayerConfig.statsObject,
        episodePID: tvMediaBlock.id,
      },
      playlistObject: {
        title: mediaOverrides?.pageTitleOverride,
        holdingImageURL,
        items: [
          {
            versionID: video?.versionId,
            kind: tvMediaBlock.smpKind,
            duration: video?.duration,
          },
        ],
        summary: tvMediaBlock.synopses.short,
        ...(tvMediaBlock.embedding && { embedRights: 'allowed' }),
      },
    },
    mediaType: 'video',
    placeholderConfig,
    showAds: false,
  };
};