import { t } from '@lingui/macro'; import { PostsList as PostsListData } from '@ts/types/blog'; import styles from './PostsList.module.scss'; import PostPreview from '@components/PostPreview/PostPreview'; import { ForwardedRef, forwardRef, Fragment } from 'react'; import { sortPostsByYear } from '@utils/helpers/sort'; const PostsList = ( { data, showYears, }: { data: PostsListData[]; showYears: boolean; }, ref: ForwardedRef ) => { const titleLevel = showYears ? 3 : 2; const getPostsListByYear = () => { const posts = sortPostsByYear(data); const years = Object.keys(posts).reverse(); const getLastPostId = () => { const oldestYear = Object.keys(posts)[0]; const lastPost = posts[oldestYear][posts[oldestYear].length - 1]; return lastPost.id; }; return years.map((year) => { return (
{showYears && (

{t`Published in`} {year}

)}
    {posts[year].map((post) => { const isLastPost = post.id === getLastPostId(); return (
  1. {isLastPost && }
    ); })}
); }); }; const getPostsList = () => { return data.map((page) => { const getLastPostId = () => { const lastPost = page.posts[page.posts.length - 1]; return lastPost.id; }; if (page.posts.length === 0) { return

{t`No results found.`}

; } else { return (
    {page.posts.map((post) => { const isLastPost = post.id === getLastPostId(); return (
  1. {isLastPost && }
    ); })}
); } }); }; return
{showYears ? getPostsListByYear() : getPostsList()}
; }; export default forwardRef(PostsList);