the preview never had a tab: the URL param is :section, not :tabId
Selecting a tab put its id in the URL and the preview still said "Select a tab to preview". A plugin gets exactly two routes from the shell — /<route> and /<route>/:section — so :section is the only param name that ever arrives, whatever the plugin means by it. This read :tabId, which was right while it was a platform screen with its own /browser/:tabId route and stayed in place through the extraction. The route matched, the id was in the URL, and useParams().tabId was undefined. Nothing typechecks this: the param is a string key, and the wrong one is simply absent. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+10
-1
@@ -17,7 +17,16 @@ export type BrowserTarget = {
|
|||||||
export const browserTabPath = (id: string) => `/browser/${encodeURIComponent(id)}`;
|
export const browserTabPath = (id: string) => `/browser/${encodeURIComponent(id)}`;
|
||||||
|
|
||||||
/** The previewed tab, or null on the bare `/browser` route — the list with nothing open. */
|
/** The previewed tab, or null on the bare `/browser` route — the list with nothing open. */
|
||||||
export const useSelectedTabId = (): string | null => useParams<{ tabId?: string }>().tabId ?? null;
|
/**
|
||||||
|
* Which tab is open, from the URL.
|
||||||
|
*
|
||||||
|
* The param is `section`, not `tabId`. A plugin gets exactly two routes from the shell — `/<route>` and
|
||||||
|
* `/<route>/:section` — so `:section` is the only param name that ever arrives, whatever the plugin
|
||||||
|
* means by it. This read `tabId` while it was a platform screen with its own `/browser/:tabId` route,
|
||||||
|
* and kept reading it after becoming a plugin: the id was in the URL, the route matched, and the panel
|
||||||
|
* saw undefined. The preview said "Select a tab to preview" with a tab plainly selected.
|
||||||
|
*/
|
||||||
|
export const useSelectedTabId = (): string | null => useParams<{ section?: string }>().section ?? null;
|
||||||
|
|
||||||
// Both panels want this list and React Query serves both observers from one key, so the preview being
|
// Both panels want this list and React Query serves both observers from one key, so the preview being
|
||||||
// able to tell "no tab open" from "that tab is gone" costs no extra request. It needs to: a CDP target
|
// able to tell "no tab open" from "that tab is gone" costs no extra request. It needs to: a CDP target
|
||||||
|
|||||||
Reference in New Issue
Block a user