codeant-ai-for-open-source[bot] commented on code in PR #42143:
URL: https://github.com/apache/superset/pull/42143#discussion_r3605221513
##########
superset-frontend/src/views/App.tsx:
##########
@@ -214,15 +218,26 @@ const AppContent = () => {
);
};
-const App = () => (
- <Router basename={applicationRoot()}>
- <ScrollToTop />
- <LocationPathnameLogger />
- <RootContextProviders>
- <AppContent />
- <ToastContainer />
- </RootContextProviders>
- </Router>
-);
+const App = () => {
+ const layoutPortalNode = useMemo(() => createHtmlPortalNode(), []);
+
+ return (
+ <Router basename={applicationRoot()}>
+ <ScrollToTop />
+ <LocationPathnameLogger />
+ <RootContextProviders>
+ <InPortal node={layoutPortalNode}>
+ <Layout css={layoutCss}>
+ <Layout.Content css={contentCss}>
+ <RouteSwitch />
+ </Layout.Content>
+ </Layout>
+ </InPortal>
+ <AppContent />
Review Comment:
**Suggestion:** `AppContent` now requires a `layoutPortalNode` prop, but it
is rendered without that prop. This makes `OutPortal` receive an undefined node
and will break rendering (or fail type-check/build). Pass the same memoized
portal node from `App` into `AppContent` so both `InPortal` and `OutPortal`
reference the same node. [api mismatch]
<details>
<summary><b>Severity Level:</b> Critical 🚨</summary>
```mdx
❌ Frontend TypeScript build fails at AppContent call.
❌ Root router component cannot render any routes.
⚠️ Chat panel portal never attaches main layout content.
```
</details>
<details>
<summary><b>Steps of Reproduction ✅ </b></summary>
```mdx
1. Open `superset-frontend/src/views/App.tsx` and observe the `AppContent`
component
defined at lines 148-219, which destructures a `layoutPortalNode` prop typed
as `{
layoutPortalNode: HtmlPortalNode; }` and passes it to `<OutPortal
node={layoutPortalNode}
/>` at line 168 (verified via Read tool).
2. In the same file, examine the `App` component at lines 221-241: it
creates `const
layoutPortalNode = useMemo(() => createHtmlPortalNode(), []);` at line 222
and uses that
value in `<InPortal node={layoutPortalNode}>` at line 229 to host the main
`<Layout>`/`<RouteSwitch />` subtree.
3. Still in `App.tsx`, note that `App` renders `<AppContent />` at line 236
(no props), so
the JSX call site provides an empty props object `{}`; inside `AppContent`,
the
destructured `layoutPortalNode` parameter therefore receives `undefined` at
runtime.
4. Trigger any frontend TypeScript compilation or runtime render path that
includes `App`
(this file is part of the main SPA shell, referenced in tests like
`src/utils/navigationUtils.invariants.test.ts`), and observe either a
TypeScript error
("Property 'layoutPortalNode' is missing in type '{}' but required in type '{
layoutPortalNode: HtmlPortalNode; }'") or, if types are not enforced,
`<OutPortal
node={undefined} />` failing to attach the portal, breaking rendering of the
main
`<Layout>` subtree.
```
</details>
[](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=6808ce18267c416cb57049d0056d5853&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
[](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=6808ce18267c416cb57049d0056d5853&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
*(Use Cmd/Ctrl + Click for best experience)*
<details>
<summary><b>Prompt for AI Agent 🤖 </b></summary>
```mdx
This is a comment left during a code review.
**Path:** superset-frontend/src/views/App.tsx
**Line:** 236:236
**Comment:**
*Api Mismatch: `AppContent` now requires a `layoutPortalNode` prop, but
it is rendered without that prop. This makes `OutPortal` receive an undefined
node and will break rendering (or fail type-check/build). Pass the same
memoized portal node from `App` into `AppContent` so both `InPortal` and
`OutPortal` reference the same node.
Validate the correctness of the flagged issue. If correct, How can I resolve
this? If you propose a fix, implement it and please make it concise.
Once fix is implemented, also check other comments on the same PR, and ask
user if the user wants to fix the rest of the comments as well. if said yes,
then fetch all the comments validate the correctness and implement a minimal fix
```
</details>
<a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F42143&comment_hash=6f78a7ff13fe21e038b3f3329b80dc31cb5c5f91c5e2c9e690df7934ef4f67ed&reaction=like'>👍</a>
| <a
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F42143&comment_hash=6f78a7ff13fe21e038b3f3329b80dc31cb5c5f91c5e2c9e690df7934ef4f67ed&reaction=dislike'>👎</a>
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]