Move manual sync to a single 'Update all' button in the header popover

The feed/channels 'Update' buttons triggered a global sync of all channels,
which was misleading inside a specific category or page context. Now one
'Update all' button in the sync indicator popover runs subscriptions then
videos sequentially, tolerates an already-running sync (409), and pages
keep their finished_at-based cache invalidation.
This commit is contained in:
vrubelroman 2026-09-18 09:39:18 +00:00
parent 5fa5a391d7
commit 0dc1336951
5 changed files with 94 additions and 19 deletions

View file

@ -20,6 +20,8 @@
.sync-popover { position: absolute; top: calc(100% + 12px); right: 0; width: 280px; padding: 17px; border: 1px solid var(--border); border-radius: 12px; background: var(--surface-raised); box-shadow: 0 16px 50px rgba(0,0,0,.5); font-size: 13px; color: var(--muted); }
.sync-popover strong { display: block; color: var(--text); margin-bottom: 12px; }
.sync-popover p + p { margin-top: 9px; }
.sync-popover .sync-all-button { width: 100%; min-height: 40px; margin-top: 14px; }
.sync-popover .sync-all-button + .error { margin-top: 9px; }
.mobile-menu, .drawer-header, .drawer-backdrop { display: none; }
.app-sidebar { position: fixed; z-index: 30; top: 66px; left: 0; bottom: 0; width: 244px; overflow-y: auto; border-right: 1px solid var(--border); background: var(--bg); }
.sidebar-nav { display: flex; flex-direction: column; min-height: 100%; padding: 20px 12px; }
@ -245,8 +247,6 @@ button, .button-primary, .button-secondary, .button-quiet, .button-danger, .butt
.page { padding: 24px 16px 58px; }
.page-heading { align-items: flex-start; gap: 13px; margin-bottom: 23px; }
.page-heading h1 { font-size: 27px; }
.refresh-button { width: 42px; height: 42px; flex: none; overflow: hidden; font-size: 0; padding: 0; }
.refresh-button svg { flex: none; }
.mobile-category-nav { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; }
.video-grid { display: grid; grid-template-columns: 1fr; gap: 28px; }
.video-thumbnail { border-radius: 9px; }