redbadger/website-honestly

View on GitHub
site/routes/selectors.js

Summary

Maintainability
A
0 mins
Test Coverage
A
100%
const getBadgersByCategory = (badgers, category) => {
  if (category === 'everyone') return badgers;
  return badgers.filter(
    badger => badger.categories.filter(cat => cat.slug === category).length > 0,
  );
};

const createPages = (category, count) =>
  Array.from(Array(Math.ceil(count / 20)).keys()).map(page => ({
    category,
    page: page + 1,
  }));

export const getBadgersTitle = ({ categories, category }) => {
  const categoryFound = categories.filter(cat => cat.slug === category);
  return `Meet our${categoryFound.length > 0 ? ' ' + categoryFound[0].name : ''} team`;
};

export const genBadgersParams = state =>
  state.categories.reduce((params, category) => {
    const count = getBadgersByCategory(state.badgers, category.slug).length;
    return params.concat(createPages(category.slug, count));
  }, createPages('everyone', state.badgers.length + 1));

export const stateToBadgerProps = ({ badgers, categories }, { category, page } = {}) => {
  return {
    badgers: getBadgersByCategory(badgers, category),
    categories,
    category,
    page,
  };
};