Skip to content

Commit 0cffaca

Browse files
authored
Merge branch 'main' into chore/coderabbit-triage-v0.2.10
2 parents b33cb6c + d3ee37a commit 0cffaca

1 file changed

Lines changed: 12 additions & 18 deletions

File tree

  • components/frontend/src/app/projects/[name]/sessions/[sessionName]

components/frontend/src/app/projects/[name]/sessions/[sessionName]/page.tsx

Lines changed: 12 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use client";
22

3-
import { useState, useEffect, useMemo, useRef, useCallback } from "react";
3+
import { use, useState, useEffect, useMemo, useRef, useCallback } from "react";
44
import {
55
Loader2,
66
PanelRight,
@@ -117,9 +117,15 @@ export default function ProjectSessionDetailPage({
117117
}) {
118118
const router = useRouter();
119119
const queryClient = useQueryClient();
120-
const [projectName, setProjectName] = useState<string>("");
121-
const [sessionName, setSessionName] = useState<string>("");
122-
const [backHref, setBackHref] = useState<string | null>(null);
120+
const { name: projectName, sessionName } = use(params);
121+
const backHref = useMemo(() => {
122+
if (typeof window !== "undefined") {
123+
try {
124+
return new URL(window.location.href).searchParams.get("backHref");
125+
} catch {}
126+
}
127+
return null;
128+
}, []);
123129
const [contextModalOpen, setContextModalOpen] = useState(false);
124130
const [uploadModalOpen, setUploadModalOpen] = useState(false);
125131
const [repoChanging, setRepoChanging] = useState(false);
@@ -148,18 +154,6 @@ export default function ProjectSessionDetailPage({
148154
const [customWorkflowDialogOpen, setCustomWorkflowDialogOpen] =
149155
useState(false);
150156

151-
// Extract params
152-
useEffect(() => {
153-
params.then(({ name, sessionName: sName }) => {
154-
setProjectName(name);
155-
setSessionName(sName);
156-
try {
157-
const url = new URL(window.location.href);
158-
setBackHref(url.searchParams.get("backHref"));
159-
} catch {}
160-
});
161-
}, [params]);
162-
163157
// Session queue hook (localStorage-backed)
164158
const sessionQueue = useSessionQueue(projectName, sessionName);
165159

@@ -208,8 +202,8 @@ export default function ProjectSessionDetailPage({
208202
// Note: autoConnect is intentionally false to avoid SSR hydration mismatch
209203
// Connection is triggered manually in useEffect after client hydration
210204
const aguiStream = useAGUIStream({
211-
projectName: projectName || "",
212-
sessionName: sessionName || "",
205+
projectName,
206+
sessionName,
213207
autoConnect: false, // Manual connection after hydration
214208
onError: (err) => {
215209
console.error("AG-UI stream error:", err)

0 commit comments

Comments
 (0)