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,
toggleFeedActive,
getFeedByUrl,
getFeedById,
fetchAllEpisodes,
fetchEpisodesWithArticles,
getFeedRequests,

View File

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

View File

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