Skip to content

Commit d15721c

Browse files
committed
web: default new session to current session context
1 parent 5d840b5 commit d15721c

1 file changed

Lines changed: 26 additions & 5 deletions

File tree

web/src/router.tsx

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,29 @@ function SessionsPage() {
249249
const { desktopSidebarHidden, setDesktopSidebarHidden, toggleDesktopSidebar } = useSessionSidebarVisibility()
250250
const [mobileSidebarOpen, setMobileSidebarOpen] = useState(false)
251251
const [sessionSearchQuery, setSessionSearchQuery] = useState('')
252+
const sessionMatch = matchRoute({ to: '/sessions/$sessionId', fuzzy: true })
253+
const chatRouteMatch = matchRoute({ to: '/sessions/$sessionId', fuzzy: false })
254+
const selectedSessionId = sessionMatch && sessionMatch.sessionId !== 'new' ? sessionMatch.sessionId : null
255+
256+
const selectedSessionPreset = useMemo<NewSessionPreset | undefined>(() => {
257+
if (!selectedSessionId) {
258+
return undefined
259+
}
260+
const selected = sessions.find((session) => session.id === selectedSessionId)
261+
if (!selected) {
262+
return undefined
263+
}
264+
265+
const directory = selected.metadata?.path?.trim()
266+
const machineId = selected.metadata?.machineId?.trim()
267+
if (!directory && !machineId) {
268+
return undefined
269+
}
270+
return {
271+
directory: directory || undefined,
272+
machineId: machineId || undefined
273+
}
274+
}, [selectedSessionId, sessions])
252275

253276
const visibleSessions = useMemo(
254277
() => filterSessionsBySearch(sessions, sessionSearchQuery),
@@ -260,12 +283,13 @@ function SessionsPage() {
260283
}, [refetch])
261284

262285
const openNewSession = useCallback((preset?: NewSessionPreset) => {
286+
const resolvedPreset = preset ?? selectedSessionPreset
263287
setMobileSidebarOpen(false)
264288
navigate({
265289
to: '/sessions/new',
266-
search: toNewSessionSearch(preset)
290+
search: toNewSessionSearch(resolvedPreset)
267291
})
268-
}, [navigate])
292+
}, [navigate, selectedSessionPreset])
269293

270294
const quickCreateInProject = useCallback(async (preset?: NewSessionPreset) => {
271295
if (isQuickCreatingSession) {
@@ -337,9 +361,6 @@ function SessionsPage() {
337361
])
338362

339363
const projectCount = new Set(visibleSessions.map(s => s.metadata?.worktree?.basePath ?? s.metadata?.path ?? 'Other')).size
340-
const sessionMatch = matchRoute({ to: '/sessions/$sessionId', fuzzy: true })
341-
const chatRouteMatch = matchRoute({ to: '/sessions/$sessionId', fuzzy: false })
342-
const selectedSessionId = sessionMatch && sessionMatch.sessionId !== 'new' ? sessionMatch.sessionId : null
343364
const isSessionChatRoute = Boolean(chatRouteMatch && chatRouteMatch.sessionId !== 'new')
344365
const isSessionsIndex = pathname === '/sessions' || pathname === '/sessions/'
345366
const showDesktopSidebar = isSessionsIndex || !desktopSidebarHidden

0 commit comments

Comments
 (0)