Fix episode list

This commit is contained in:
2025-06-07 14:08:42 +09:00
parent bc2be914df
commit 53a408d074
4 changed files with 38 additions and 3 deletions

View File

@ -8,6 +8,7 @@ import {
deleteFeed, deleteFeed,
toggleFeedActive, toggleFeedActive,
getFeedByUrl, getFeedByUrl,
getFeedById,
fetchAllEpisodes, fetchAllEpisodes,
fetchEpisodesWithArticles, fetchEpisodesWithArticles,
getFeedRequests, getFeedRequests,

View File

@ -27,10 +27,15 @@ function EpisodeList() {
try { try {
setLoading(true) setLoading(true)
const response = await fetch('/api/episodes') const response = await fetch('/api/episodes')
if (!response.ok) throw new Error('エピソードの取得に失敗しました') if (!response.ok) {
const errorData = await response.json()
throw new Error(errorData.error || 'エピソードの取得に失敗しました')
}
const data = await response.json() const data = await response.json()
console.log('Fetched episodes:', data)
setEpisodes(data) setEpisodes(data)
} catch (err) { } catch (err) {
console.error('Episode fetch error:', err)
setError(err instanceof Error ? err.message : 'エラーが発生しました') setError(err instanceof Error ? err.message : 'エラーが発生しました')
} finally { } finally {
setLoading(false) setLoading(false)
@ -64,7 +69,14 @@ function EpisodeList() {
return ( return (
<div className="empty-state"> <div className="empty-state">
<p></p> <p></p>
<p>RSSフィードを追加してくださ</p> <p>RSSフィードをリクエストするか</p>
<button
className="btn btn-secondary"
onClick={fetchEpisodes}
style={{ marginTop: '10px' }}
>
</button>
</div> </div>
) )
} }

View File

@ -7,6 +7,7 @@ import { generateTTS } from "../services/tts.js";
import { import {
saveFeed, saveFeed,
getFeedByUrl, getFeedByUrl,
getFeedById,
saveArticle, saveArticle,
getUnprocessedArticles, getUnprocessedArticles,
markArticleAsProcessed, markArticleAsProcessed,
@ -294,7 +295,7 @@ async function generatePodcastForArticle(article: any): Promise<void> {
try { try {
// Get feed information for context // Get feed information for context
const feed = await getFeedByUrl(article.feedId); const feed = await getFeedById(article.feedId);
const feedTitle = feed?.title || "Unknown Feed"; const feedTitle = feed?.title || "Unknown Feed";
// Classify the article/feed // Classify the article/feed

View File

@ -193,6 +193,27 @@ export async function getFeedByUrl(url: string): Promise<Feed | null> {
} }
} }
export async function getFeedById(id: string): Promise<Feed | null> {
try {
const stmt = db.prepare("SELECT * FROM feeds WHERE id = ?");
const row = stmt.get(id) as any;
if (!row) return null;
return {
id: row.id,
url: row.url,
title: row.title,
description: row.description,
lastUpdated: row.last_updated,
createdAt: row.created_at,
active: Boolean(row.active),
};
} catch (error) {
console.error("Error getting feed by ID:", error);
throw error;
}
}
export async function getAllFeeds(): Promise<Feed[]> { export async function getAllFeeds(): Promise<Feed[]> {
try { try {
const stmt = db.prepare( const stmt = db.prepare(