Per user feedback: promote Plex from a hidden feed-Source option to a first-class left-nav module, with its own filter sidebar and the shared top search box. - Plex is now a nav-rail module (page='plex', gated on me.plex_enabled) — its own page → correct browser Back/Forward; removed the Feed Source-dropdown 'plex' hack. - PlexSidebar.tsx: left filter column (library scope, watch-state for movies: all/unwatched/in_progress/watched, sort) — per-account persisted (App state). - Header search box now also serves the Plex page (integrated search); the live YouTube-search escalation stays feed-only. - PlexBrowse.tsx reworked: infinite scroll (IntersectionObserver, no 'Load more'), content-visibility for smoother long-list scroll, show drill-down rides history (useHistorySubview) so Back returns to the grid; dropped the stray 'YouTube feed' button on the show page. - backend /browse gains a per-user watch-state filter (show=, movies only). - plex i18n (navLabel + filter.*) en/hu/de. Note: episode-title 'Episode N' on some shows (e.g. Westworld) is Plex-side (unmatched show) — we mirror what Plex has; Match/Refresh in Plex + re-sync fixes it.
34 lines
1,014 B
TypeScript
34 lines
1,014 B
TypeScript
import type { Page } from "./urlState";
|
|
|
|
// The i18n key for a page's human title — shared by the top-bar header and the browser tab title
|
|
// so the two never drift. Keep in sync with the nav modules in NavSidebar / App's page switch.
|
|
export function pageTitleKey(page: Page): string {
|
|
switch (page) {
|
|
case "feed":
|
|
return "header.account.feed";
|
|
case "channels":
|
|
return "header.channelManager";
|
|
case "playlists":
|
|
return "header.account.playlists";
|
|
case "notifications":
|
|
return "inbox.navLabel";
|
|
case "messages":
|
|
return "messages.navLabel";
|
|
case "downloads":
|
|
return "downloads.navLabel";
|
|
case "stats":
|
|
return "header.usageStats";
|
|
case "plex":
|
|
return "plex.navLabel";
|
|
case "scheduler":
|
|
return "header.scheduler";
|
|
case "config":
|
|
return "header.configuration";
|
|
case "users":
|
|
return "header.users";
|
|
case "settings":
|
|
return "settings.title";
|
|
default:
|
|
return "header.account.feed";
|
|
}
|
|
}
|