src/app/legacy/containers/StoryPromo/utilities/index.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
import pathOr from 'ramda/src/pathOr';
import { MEDIA_ASSET_PAGE } from '#app/routes/utils/pageTypes';

// MAP is now either a Media Asset Page or a Media Article Page
export const isMap = item => {
  const isCpsTypeMap = pathOr(null, ['cpsType'], item) === MEDIA_ASSET_PAGE;
  const hasMedia = pathOr(false, ['media'], item);
  const contentType = pathOr(null, ['contentType'], item);
  const isOptimoMediaPromo = ['Audio', 'Video'].includes(contentType);

  return isCpsTypeMap || Boolean(hasMedia) || isOptimoMediaPromo;
};

export const getHeadingTagOverride = ({ isContentTypeGuide }) => {
  if (isContentTypeGuide) {
    return 'div';
  }

  return null;
};

export const isPgl = item => pathOr(null, ['cpsType'], item) === 'PGL';

export const buildUniquePromoId = ({
  sectionType,
  promoGroupId,
  promoItem,
  promoIndex = 0,
}) => {
  const assetUri = pathOr('', ['locators', 'assetUri'], promoItem);
  const canonicalUrl = pathOr('', ['locators', 'canonicalUrl'], promoItem);
  const uri = pathOr('', ['uri'], promoItem);
  const asset = assetUri || uri || canonicalUrl;
  const assetParts = asset.split(/www\.bbc\.(co\.uk|com)/);
  const assetId = assetParts[assetParts.length - 1].replace(/\W/g, '');
  const contentType = pathOr('', ['contentType'], promoItem);

  return [
    sectionType,
    'promo',
    promoGroupId,
    assetId,
    contentType,
    promoIndex + 1,
  ]
    .filter(Boolean)
    .join('-')
    .toLowerCase();
};