import Spinner from '@components/Spinner/Spinner'; import { getPublishedPosts } from '@services/graphql/queries'; import { ArticlePreview } from '@ts/types/articles'; import { settings } from '@utils/config'; import { getFormattedDate } from '@utils/helpers/format'; import Image from 'next/image'; import Link from 'next/link'; import { useRouter } from 'next/router'; import { useIntl } from 'react-intl'; import useSWR from 'swr'; import styles from './RecentPosts.module.scss'; const RecentPosts = () => { const intl = useIntl(); const { data, error } = useSWR('/recent-posts', () => getPublishedPosts({ first: 3 }) ); const router = useRouter(); const locale = router.locale ? router.locale : settings.locales.defaultLocale; const getPost = (post: ArticlePreview) => { return (
  • {post.featuredImage && Object.keys(post.featuredImage).length > 0 && (
    {post.featuredImage.altText}
    )}

    {post.title}

    {intl.formatMessage({ defaultMessage: 'Published on:', description: 'RecentPosts: publication date label', })}
  • ); }; const getPostsItems = () => { if (error) return intl.formatMessage({ defaultMessage: 'Failed to load.', description: 'RecentPosts: failed to load text', }); if (!data) return ; return data.posts.map((post) => getPost(post)); }; return ( ); }; export default RecentPosts;