alxshelepenok/gatsby-starter-lumen

View on GitHub
src/hooks/use-categories-list.ts

Summary

Maintainability
A
0 mins
Test Coverage
import { graphql, useStaticQuery } from "gatsby";

interface CategoriesQueryResult {
  allMarkdownRemark: {
    group: Array<{
      fieldValue: string;
      totalCount: number;
    }>;
  };
}

const useCategoriesList = () => {
  const { allMarkdownRemark } = useStaticQuery<CategoriesQueryResult>(graphql`
    query CategoriesListQuery {
      allMarkdownRemark(
        filter: {
          frontmatter: { template: { eq: "post" }, draft: { ne: true } }
        }
      ) {
        group(field: frontmatter___category) {
          fieldValue
          totalCount
        }
      }
    }
  `);

  return allMarkdownRemark.group ?? [];
};

export default useCategoriesList;