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:
parent
50a7774588
commit
a6c4888e92
1 changed files with 5 additions and 2 deletions
|
|
@ -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.
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue