import { getDevtoArticle, getMediumArticle } from "article-api"; import moment from "moment"; import { useEffect, useState } from "react"; import { CgHashtag } from 'react-icons/cg'; import { useSelector } from "react-redux"; import config from "../config"; import { skeleton } from "../helpers/utils"; import LazyImage from "./LazyImage"; const Blog = () => { const [articles, setArticles] = useState(null); const loading = useSelector(state => state.loading); useEffect(() => { if ( typeof config.blog !== 'undefined' && typeof config.blog.source !== 'undefined' && typeof config.blog.username !== 'undefined' && config.blog.source && config.blog.username ) { if (config.blog.source === 'medium') { getMediumArticle({ user: config.blog.username }) .then(res => { setArticles(res); }); } else if (config.blog.source === 'dev.to') { getDevtoArticle({ user: config.blog.username }) .then(res => { setArticles(res); }); } } }, []) const renderSkeleton = () => { let array = []; for (let index = 0; index < 2; index++) { array.push((
{ skeleton({ width: 'w-full', height: 'h-full', shape: '', }) }

{skeleton({ width: 'w-48', height: 'h-8', className: 'mb-2 mx-auto md:mx-0' })}

{skeleton({ width: 'w-24', height: 'h-3', className: 'mx-auto md:mx-0' })}
{skeleton({ width: 'w-full', height: 'h-4', className: 'mx-auto md:mx-0' })}
{skeleton({ width: 'w-32', height: 'h-4', className: "md:mr-2 mx-auto md:mx-0" })}
)) } return array; } const renderArticles = () => { return articles && articles.slice(0, 5).map((article, index) => (

{article.title}

{moment(article.publishedAt).fromNow()}

{article.description}

{ article.categories.map((category, index2) => (
{category}
)) }
)) } return (
  • { (loading || !articles) ? skeleton({ width: 'w-28', height: 'h-8' }) : ( Recent Posts ) }
{(loading || !articles) ? renderSkeleton() : renderArticles()}
) } export default Blog;