fix(channel): let the nav rail navigate away from a channel page

The channel page overlays the content column via channelView, which setPage didn't clear — so
clicking a rail item did nothing (and the next===page early-return blocked 'Feed' when a channel
was opened from the feed). setPage now clears channelView and proceeds even when the underlying
page is unchanged.
This commit is contained in:
npeter83 2026-06-30 04:47:54 +02:00
parent 50a7774588
commit a6c4888e92

View file

@ -208,14 +208,17 @@ export default function App() {
} }
function setPage(next: Page) { function setPage(next: Page) {
if (next === page) return; // While a channel page is open it overlays the content column, so a nav click must close it
// even when the underlying page is unchanged (e.g. "Feed" while a channel opened from the feed).
if (next === page && !channelView) return;
const go = () => { const go = () => {
setChannelView(null); // leave any open channel page when navigating via the rail
setPageState(next); setPageState(next);
localStorage.setItem(PAGE_KEY, next); localStorage.setItem(PAGE_KEY, next);
// Push an in-app history entry so the browser/mouse Back button steps through pages // Push an in-app history entry so the browser/mouse Back button steps through pages
// instead of leaving the app (e.g. back to the OAuth redirect). The URL stays clean — // instead of leaving the app (e.g. back to the OAuth redirect). The URL stays clean —
// the page rides in history.state, not the query string (filters never go in the URL). // the page rides in history.state, not the query string (filters never go in the URL).
// A fresh { sfPage } (no carried-over _sub/_ov markers) so each page starts at its root. // A fresh { sfPage } (no carried-over _sub/_ov/_chan markers) so each page starts at its root.
window.history.pushState({ sfPage: next }, ""); window.history.pushState({ sfPage: next }, "");
}; };
// Guard leaving the Settings page with unsaved preference changes. // Guard leaving the Settings page with unsaved preference changes.