function getBlogCategories()

in src/theme/BlogListPage/index.tsx [20:53]


function getBlogCategories(props) {
    const { siteConfig } = useDocusaurusContext();
    const allText = 'All';
    const { items } = props;
    const allCategory = { label: allText, values: [] };
    const categories = [allCategory];

    useEffect(() => {
        sessionStorage.setItem('tag', allText);
    }, []);
    items.forEach(({ content: BlogPostContent }) => {
        const { frontMatter } = BlogPostContent;
        const tags = frontMatter.tags || [];
        if (tags.length > 0) {
            tags.forEach(tag => {
                const index = categories.length > 0 ? categories.findIndex(cate => cate.label === tag) : -1;
                if (index > -1) {
                    const curCategory = categories[index];
                    curCategory.values.push(BlogPostContent);
                } else {
                    const category = {
                        label: tag,
                        values: [BlogPostContent],
                    };
                    categories.push(category);
                }
                if (allCategory.values.every(val => val.metadata.permalink !== BlogPostContent.metadata.permalink)) {
                    allCategory.values.push(BlogPostContent);
                }
            });
        }
    });
    return categories;
}