mirror of
https://github.com/nowcommunity/nowdatabase.git
synced 2026-10-12 19:13:52 +03:00
3.4 KiB
3.4 KiB
Update Log Navigation Flow Audit
Overview
This document summarizes how "Return to table" navigation currently works when
browsing detail views and the update log. It identifies each component that
mutates the previousTableUrls stack and describes how a detail view decides the
route to navigate back to.
Core State Container
- File:
frontend/src/components/Page.tsx - Responsibility: exposes
previousTableUrlsviaPageContext. The stack is initialised to an empty array whenever a newPageContextProvideris mounted (i.e. when navigating between entity pages such as Locality → Reference).
Return Logic
- File:
frontend/src/components/DetailView/components.tsx - Component:
ReturnButton - Behaviour:
- If the detail view is in staging mode, it switches the editing mode instead of navigating.
- Otherwise it pops the last entry from
previousTableUrlsand callsnavigate(previousUrl, { relative: 'path' }). - When the stack is empty it falls back to
navigate(location.pathname.substring(0, location.pathname.indexOf('/', 1)), { relative: 'path' }), i.e. it trims the current path to the first segment ("/reference" for/reference/123).
Places That Push to previousTableUrls
| File | Component | Trigger | Value pushed |
|---|---|---|---|
frontend/src/components/DetailView/common/SimpleTable.tsx |
SimpleTable |
Clicking a row in read mode | ${location.pathname}?tab=${searchParams.get('tab')} |
frontend/src/components/TableView/ActionComponent.tsx |
ActionComponent (detail button) |
Clicking the action button when selectorFn and tableRowAction are undefined |
${location.pathname}?tab=${searchParams.get('tab')} |
frontend/src/components/TableView/TableView.tsx |
TableView |
Clicking a table row when clickableRows is true |
${location.pathname}?&columnfilters=...&sorting=...&pagination=... |
frontend/src/components/TableView/TableToolBar.tsx |
TableToolBar |
Clicking the "New" button | ${location.pathname} |
Navigation Gaps Identified
- File:
frontend/src/components/DetailView/common/UpdateTab.tsx- The
ReferenceListrenders<Link to={/reference/${ref.rid}}>inside the update details modal. This link does not push any entry to thepreviousTableUrlsstack. Because navigating to/reference/:idmounts a newPageContextProvider, the stack is reset. Consequently pressing "Return to table" on the reference detail page falls back to the default segment (/reference). - The observed user bug (returning to the Localities table instead of the
update log) stems from this missing stack update. Depending on how the
router resolves
{ relative: 'path' }, the fallback can resolve to the Localities table when navigating from certain nested routes.
- The
Additional Observations
- File:
frontend/src/components/TableView/ActionComponent.tsx- Uses the global
locationobject (not the React Router hook), which relies on browser globals being available and could complicate testing.
- Uses the global
- File:
frontend/src/components/TableView/TableView.tsx- Persists table state parameters in the URL before navigating to a detail page and restores them on return.
These findings cover all components that currently influence the "Return to table" behaviour and highlight the missing state propagation when navigating from update log reference links.