feat(nav): each module declares its URL keys; a page switch clears them and a page opens without another's
The shell cleared a hand-kept key list on a page switch (it missed the Files and feed keys) and cleared nothing when a page opened from a link carrying another page's keys. ModuleDef.urlKeys now names every key a page's view writes, the shell derives both from the registry, and moduleUrl.contract.test holds the declarations true: one owner per key, no shell key, exactly what each codec writes, and no undeclared key literal in the app.
This commit is contained in:
@@ -44,4 +44,10 @@ export type ModuleDef = {
|
||||
// Static, unlike the page: it is on the boot path by design. It reads no other module's store, so
|
||||
// the order the stores nest in does not matter (moduleStores.contract.test).
|
||||
Store?: ComponentType<{ children: ReactNode }>;
|
||||
// Every address-bar key this page's view writes: its filters, sort, tab, the item it shows. The URL
|
||||
// IS the view, so a bookmark reopens it. The shell clears them all on a page switch, and opens a page
|
||||
// with no other page's keys in its address (NavigationProvider), so one page's state never rides
|
||||
// along onto another's URL. Empty for a page with nothing of its own in the URL. Each key belongs to
|
||||
// one module and none is a shell key (moduleUrl.contract.test).
|
||||
urlKeys: readonly string[];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user