import type { FeedHealth } from "@umt/contracts"; import { Plus, RefreshCw } from "lucide-react"; import { useState } from "react"; import { useFeeds } from "~/api/feeds.ts"; import { useSites } from "~/api/sites.ts"; import { DetailSection } from "~/components/console/detail-sheet.tsx"; import { FilterBar, FilterSelect } from "~/components/console/filter-bar.tsx"; import { PageHeader } from "~/components/console/page-header.tsx"; import { useQueryState } from "~/components/console/use-query-state.ts"; import { Button } from "~/components/ui/button.tsx"; import { FEED_HEALTH, FeedTable } from "~/components/workbench/feed-table.tsx"; import { legacyRedirectLoader } from "./redirects.ts"; // RSS:跨站点的 RSS 列表;站点健康只在站点页(DEAI-2 去掉重复的站点表)。 export const meta = () => [{ title: "RSS · UHD 媒体自动化控制台" }]; // 旧的 ?tab=snapshots&siteId= 跳到站点详情的"快照与 Feed" export const clientLoader = legacyRedirectLoader; export default function SourcesPage() { const f = useQueryState(["health", "siteId"] as const); const [creating, setCreating] = useState(false); const sites = useSites(); const feeds = useFeeds({ health: (f.values.health || undefined) as FeedHealth | undefined, siteId: f.values.siteId || undefined, }); return ( <> setCreating(true)}> 新建 RSS } />
void feeds.refetch()} disabled={feeds.isFetching}> 刷新 } > f.set("health", v)} options={Object.entries(FEED_HEALTH).map(([value, h]) => ({ value, label: h.label }))} /> f.set("siteId", v)} options={(sites.data?.items ?? []).map((s) => ({ value: s.id, label: s.name }))} />
); }