diff --git a/web/components/news-feed.tsx b/web/components/news-feed.tsx index b41d3457b..62aaf84bb 100644 --- a/web/components/news-feed.tsx +++ b/web/components/news-feed.tsx @@ -1,7 +1,7 @@ /* eslint-disable camelcase */ /* eslint-disable react/no-danger */ import React, { useState, useEffect } from 'react'; -import { Typography } from 'antd'; +import { Typography, Skeleton } from 'antd'; import format from 'date-fns/format'; import { fetchExternalData } from '../utils/apis'; @@ -36,7 +36,11 @@ function ArticleItem({ title, url, content_html: content, date_published: date } export default function NewsFeed() { const [feed, setFeed] = useState([]); + const [loading, setLoading] = useState(true); + const getFeed = async () => { + setLoading(false); + try { const result = await fetchExternalData(OWNCAST_FEED_URL); setFeed(result.items); @@ -49,16 +53,18 @@ export default function NewsFeed() { getFeed(); }, []); - if (!feed.length) { - return null; - } + const loadingSpinner = loading ? () : null; + const noNews = !loading && feed.length === 0 ? (
No news.
) : null; return (
News & Updates from Owncast + {loadingSpinner} {feed.map(item => ( ))} + + {noNews}
); }