import { useEffect, useState } from 'react'; import { Link } from 'react-router-dom'; import type { Feed, Category } from '../types'; import './FeedList.css'; export default function FeedList() { const [feeds, setFeeds] = useState([]); const [tags, setTags] = useState([]); const [loading, setLoading] = useState(true); const [error, setError] = useState(''); useEffect(() => { Promise.all([ fetch('/api/feed/').then(res => { if (!res.ok) throw new Error('Failed to fetch feeds'); return res.json(); }), fetch('/api/tag').then(res => { if (!res.ok) throw new Error('Failed to fetch tags'); return res.json(); }) ]) .then(([feedsData, tagsData]) => { setFeeds(feedsData); setTags(tagsData); setLoading(false); }) .catch((err) => { setError(err.message); setLoading(false); }); }, []); if (loading) return
Loading feeds...
; if (error) return
Error: {error}
; return (
  • Unread
  • All
  • Starred

Feeds

{feeds.length === 0 ? (

No feeds found.

) : (
    {feeds.map((feed) => (
  • {feed.title || feed.url} {feed.category && {feed.category}}
  • ))}
)}
{tags && tags.length > 0 && (

Tags

    {tags.map((tag) => (
  • {tag.title}
  • ))}
)}
); }