diff --git a/frontend/src/components/article/article-drawer.tsx b/frontend/src/components/article/article-drawer.tsx index 0e409e9..f55a36d 100644 --- a/frontend/src/components/article/article-drawer.tsx +++ b/frontend/src/components/article/article-drawer.tsx @@ -30,6 +30,7 @@ import { useArticleNavigation } from "@/hooks/use-keyboard"; import { formatDate } from "@/lib/utils"; import { processArticleContent } from "@/lib/content"; import { getFaviconUrl } from "@/lib/api/favicon"; +import { FeedFavicon } from "@/components/feed/feed-favicon"; export function ArticleDrawer() { const { @@ -206,11 +207,9 @@ export function ArticleDrawer() {
{feed && ( - )} diff --git a/frontend/src/components/article/article-item.tsx b/frontend/src/components/article/article-item.tsx index be79367..f262908 100644 --- a/frontend/src/components/article/article-item.tsx +++ b/frontend/src/components/article/article-item.tsx @@ -2,6 +2,7 @@ import { Circle, CircleCheck, Star, ExternalLink } from "lucide-react"; import { Button } from "@/components/ui/button"; import { cn, formatDate, extractSummary } from "@/lib/utils"; import type { Item } from "@/lib/api"; +import { FeedFavicon } from "@/components/feed/feed-favicon"; interface ArticleItemProps { article: Item; @@ -86,14 +87,7 @@ export function ArticleItem({ {extractSummary(article.content, 150)}

- {feedFaviconUrl && ( - - )} + {feedName} diff --git a/frontend/src/components/feed/feed-favicon.tsx b/frontend/src/components/feed/feed-favicon.tsx new file mode 100644 index 0000000..8a95d7e --- /dev/null +++ b/frontend/src/components/feed/feed-favicon.tsx @@ -0,0 +1,37 @@ +import { useEffect, useState } from "react"; +import { cn } from "@/lib/utils"; + +interface FeedFaviconProps { + src?: string | null; + className?: string; +} + +export function FeedFavicon({ src, className }: FeedFaviconProps) { + const [loadFailed, setLoadFailed] = useState(!src); + + useEffect(() => { + setLoadFailed(!src); + }, [src]); + + if (!src || loadFailed) { + return ( +
@@ -317,7 +323,10 @@ function FeedsPage() { const isEditing = editingGroupId === group.id; return ( -
+
{ if (!isEditing) toggleGroup(group.id); @@ -421,11 +430,9 @@ function FeedsPage() { )} >
-