|
1 | | -import { createFileRoute, useNavigate, useSearch } from '@tanstack/solid-router' |
| 1 | +import { createFileRoute, useNavigate } from '@tanstack/solid-router' |
2 | 2 | import { createServerFn } from '@tanstack/solid-start' |
3 | 3 | import { useServerFn } from '@tanstack/solid-start' |
4 | 4 | import { createSignal, onMount, Show } from 'solid-js' |
@@ -28,20 +28,25 @@ export const Route = createFileRoute('/playground')({ |
28 | 28 | }) |
29 | 29 |
|
30 | 30 | function PlaygroundPage() { |
31 | | - const search = useSearch({ from: '/playground' }) |
32 | 31 | const navigate = useNavigate() |
33 | 32 | const fetchSession = useServerFn(getOrCreateSession) |
34 | 33 | const [session, setSession] = createSignal<PlaygroundSession | null>(null) |
35 | 34 | const [loading, setLoading] = createSignal(true) |
36 | 35 |
|
| 36 | + // Read session ID from URL directly — useSearch reactive value isn't |
| 37 | + // hydrated yet when onMount fires in TanStack Start + SolidJS. |
| 38 | + const initialSessionId = typeof window !== 'undefined' |
| 39 | + ? new URLSearchParams(window.location.search).get('session') || undefined |
| 40 | + : undefined |
| 41 | + |
37 | 42 | onMount(async () => { |
38 | 43 | try { |
39 | | - const result = await fetchSession({ data: { sessionId: search.session } }) |
| 44 | + const result = await fetchSession({ data: { sessionId: initialSessionId } }) |
40 | 45 | const s = result as PlaygroundSession |
41 | 46 | setSession(s) |
42 | 47 |
|
43 | 48 | // Update URL with session ID if it changed or was missing |
44 | | - if (search.session !== s.id) { |
| 49 | + if (initialSessionId !== s.id) { |
45 | 50 | navigate({ search: { session: s.id }, replace: true }) |
46 | 51 | } |
47 | 52 | } finally { |
|
0 commit comments