Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 18 additions & 2 deletions ui/desktop/src/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,16 +89,32 @@ const PairRouteWrapper = ({
const setView = useNavigation();
const routeState =
(location.state as PairRouteState) || (window.history.state as PairRouteState) || {};
const [searchParams] = useSearchParams();
const [searchParams, setSearchParams] = useSearchParams();
const [initialMessage] = useState(routeState.initialMessage);

const resumeSessionId = searchParams.get('resumeSessionId') ?? undefined;

// Determine which session ID to use:
// 1. From route state (when navigating from Hub with a new session)
// 2. From URL params (when resuming a session)
// 3. From the existing chat state (when navigating to Pair directly)
const sessionId = routeState.resumeSessionId || resumeSessionId || chat.sessionId;

// Update URL with session ID if it's not already there (new chat from pair)
useEffect(() => {
if (process.env.ALPHA && sessionId && sessionId !== resumeSessionId) {
setSearchParams((prev) => {
prev.set('resumeSessionId', sessionId);
return prev;
});
}
}, [sessionId, resumeSessionId, setSearchParams]);

return process.env.ALPHA ? (
<Pair2
setChat={setChat}
setIsGoosehintsModalOpen={setIsGoosehintsModalOpen}
sessionId={routeState.resumeSessionId || resumeSessionId || ''} // TODO(Douwe) one of them should be set now
sessionId={sessionId}
initialMessage={initialMessage}
/>
) : (
Expand Down