Hide unsubscribed channels from the channels list, add a Saved tab
- GET /api/channels called with subscribed=true from the Channels page, so a channel disappears from the list as soon as it's unsubscribed instead of lingering with a badge - GET /api/feed gains a `downloaded` filter (this was already anticipated in the original TZ's feed query params but left unimplemented until download_jobs existed) -- matches on each video's *latest* job only, so a redownload/delete history doesn't leave stale matches - New /saved route: same category filtering, video grid and download actions as the main feed, scoped to downloaded videos only 2 new backend tests (76 total). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
62f8fb746b
commit
b29bcfb8d7
7 changed files with 127 additions and 3 deletions
|
|
@ -16,6 +16,7 @@ function Channels() {
|
|||
queryKey: ['channels', filter],
|
||||
queryFn: () =>
|
||||
listChannels({
|
||||
subscribed: true,
|
||||
categoryId: typeof filter === 'number' ? filter : undefined,
|
||||
uncategorized: filter === 'uncategorized',
|
||||
}),
|
||||
|
|
@ -58,6 +59,7 @@ function Channels() {
|
|||
<h1>Каналы</h1>
|
||||
<div className="actions">
|
||||
<Link to="/">Лента</Link>
|
||||
<Link to="/saved">Сохранённые</Link>
|
||||
<Link to="/categories">Категории</Link>
|
||||
<button onClick={() => syncMutation.mutate()} disabled={running}>
|
||||
{running ? 'Синхронизация...' : 'Обновить сейчас'}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue