From 2a81654d165bff7180e3fafb9b93db98e88d32f6 Mon Sep 17 00:00:00 2001 From: Satsuki Akiba Date: Sun, 8 Jun 2025 22:28:33 +0900 Subject: [PATCH] Remove category list component --- frontend/src/App.tsx | 9 - frontend/src/components/CategoryList.tsx | 392 ----------------------- 2 files changed, 401 deletions(-) delete mode 100644 frontend/src/components/CategoryList.tsx diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx index 9d01031..f17fb27 100644 --- a/frontend/src/App.tsx +++ b/frontend/src/App.tsx @@ -1,5 +1,4 @@ import { Link, Route, Routes, useLocation } from "react-router-dom"; -import CategoryList from "./components/CategoryList"; import EpisodeDetail from "./components/EpisodeDetail"; import EpisodeList from "./components/EpisodeList"; import FeedDetail from "./components/FeedDetail"; @@ -12,7 +11,6 @@ function App() { const isMainPage = [ "/", "/feeds", - "/categories", "/feed-requests", "/rss-endpoints", ].includes(location.pathname); @@ -41,12 +39,6 @@ function App() { > フィード一覧 - - カテゴリ一覧 - } /> } /> - } /> } /> } /> } /> diff --git a/frontend/src/components/CategoryList.tsx b/frontend/src/components/CategoryList.tsx deleted file mode 100644 index b6b5e8a..0000000 --- a/frontend/src/components/CategoryList.tsx +++ /dev/null @@ -1,392 +0,0 @@ -import { useEffect, useState } from "react"; -import { Link } from "react-router-dom"; - -interface Feed { - id: string; - url: string; - title?: string; - description?: string; - category?: string; - lastUpdated?: string; - createdAt: string; - active: boolean; -} - -interface CategoryGroup { - [category: string]: Feed[]; -} - -function CategoryList() { - const [groupedFeeds, setGroupedFeeds] = useState({}); - const [selectedCategory, setSelectedCategory] = useState(null); - const [filteredFeeds, setFilteredFeeds] = useState([]); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(null); - - useEffect(() => { - fetchCategoriesAndFeeds(); - }, []); - - useEffect(() => { - if (selectedCategory && groupedFeeds[selectedCategory]) { - setFilteredFeeds(groupedFeeds[selectedCategory]); - } else { - setFilteredFeeds([]); - } - }, [selectedCategory, groupedFeeds]); - - const fetchCategoriesAndFeeds = async () => { - try { - setLoading(true); - setError(null); - - // Fetch grouped feeds - const [groupedResponse, categoriesResponse] = await Promise.all([ - fetch("/api/feeds/grouped-by-category"), - fetch("/api/categories"), - ]); - - if (!groupedResponse.ok || !categoriesResponse.ok) { - throw new Error("カテゴリデータの取得に失敗しました"); - } - - const groupedData = await groupedResponse.json(); - await categoriesResponse.json(); - - setGroupedFeeds(groupedData.groupedFeeds || {}); - } catch (err) { - console.error("Category fetch error:", err); - setError(err instanceof Error ? err.message : "エラーが発生しました"); - } finally { - setLoading(false); - } - }; - - const formatDate = (dateString: string) => { - return new Date(dateString).toLocaleString("ja-JP"); - }; - - const getFeedCount = (category: string) => { - return groupedFeeds[category]?.length || 0; - }; - - if (loading) { - return
読み込み中...
; - } - - if (error) { - return
{error}
; - } - - const availableCategories = Object.keys(groupedFeeds).filter( - (category) => groupedFeeds[category] && groupedFeeds[category].length > 0, - ); - - if (availableCategories.length === 0) { - return ( -
-

カテゴリ別のフィードがありません

-

- フィードにカテゴリが設定されていないか、アクティブなフィードがない可能性があります -

- -
- ); - } - - return ( -
-
-

カテゴリ一覧 ({availableCategories.length}件)

- -
- - {!selectedCategory ? ( -
- {availableCategories.map((category) => ( -
-
-

setSelectedCategory(category)} - > - {category} -

-
- - {getFeedCount(category)} フィード - -
-
- -
- {groupedFeeds[category]?.slice(0, 3).map((feed) => ( -
- - {feed.title || feed.url} - -
- ))} - {getFeedCount(category) > 3 && ( -
- 他 {getFeedCount(category) - 3} フィード... -
- )} -
- -
- -
-
- ))} -
- ) : ( -
-
- -

カテゴリ: {selectedCategory}

-

{filteredFeeds.length} フィード

-
- -
- {filteredFeeds.map((feed) => ( -
-
-

- - {feed.title || feed.url} - -

- -
- - {feed.description && ( -
{feed.description}
- )} - -
-
作成日: {formatDate(feed.createdAt)}
- {feed.lastUpdated && ( -
最終更新: {formatDate(feed.lastUpdated)}
- )} -
- -
- - エピソード一覧を見る - -
-
- ))} -
-
- )} - - -
- ); -} - -export default CategoryList;