@@ -12,31 +12,48 @@ import { useEffect, useState } from "react";
1212
1313export default function SessionsPage ( ) {
1414 const router = useRouter ( ) ;
15- const { sessions, isLoading : loadingSessions , refetch } = useSessions ( ) ;
1615 const [ selectedSessionId , setSelectedSessionId ] = useState < string > ( "" ) ;
1716
18- // Use the hook to get students for the selected session
17+ // Hook now handles therapist ID from both auth context AND localStorage
18+ const { sessions, isLoading : loadingSessions , refetch } = useSessions ( ) ;
19+
1920 const { students : sessionStudents , isLoading : loadingStudents } =
2021 useSessionStudentsForSession ( selectedSessionId ) ;
2122
22- // Get the first session's ID when sessions load
23- useEffect ( ( ) => {
24- if ( sessions . length > 0 && ! selectedSessionId ) {
25- setSelectedSessionId ( sessions [ 0 ] . id ) ;
26- }
27- } , [ sessions , selectedSessionId ] ) ;
28-
23+ // Check if user is authenticated
2924 useEffect ( ( ) => {
3025 const userId =
31- localStorage . getItem ( "temp_userId" ) || localStorage . getItem ( "userId" ) ; // Check temp_userId first
26+ localStorage . getItem ( "temp_userId" ) || localStorage . getItem ( "userId" ) ;
3227
3328 if ( ! userId ) {
3429 router . push ( "/signup/welcome" ) ;
3530 }
31+ } , [ router ] ) ;
32+
33+ // Handle refresh from navigation and initial load
34+ useEffect ( ( ) => {
35+ if ( typeof window !== 'undefined' ) {
36+ const searchParams = new URLSearchParams ( window . location . search ) ;
37+ if ( searchParams . get ( 'refresh' ) === 'true' ) {
38+ // Add small delay to ensure session is saved
39+ setTimeout ( ( ) => {
40+ refetch ( ) ;
41+ } , 300 ) ;
42+ // Clean up URL
43+ window . history . replaceState ( { } , '' , '/signup/sessions' ) ;
44+ } else {
45+ // Normal refetch on mount
46+ refetch ( ) ;
47+ }
48+ }
49+ } , [ refetch ] ) ;
3650
37- // Refetch sessions when page loads
38- refetch ( ) ;
39- } , [ router , refetch ] ) ;
51+ // Set first session as selected
52+ useEffect ( ( ) => {
53+ if ( sessions . length > 0 && ! selectedSessionId ) {
54+ setSelectedSessionId ( sessions [ 0 ] . id ) ;
55+ }
56+ } , [ sessions , selectedSessionId ] ) ;
4057
4158 const handleBack = ( ) => {
4259 router . push ( "/signup/students" ) ;
@@ -50,7 +67,6 @@ export default function SessionsPage() {
5067 router . push ( "/signup/complete" ) ;
5168 } ;
5269
53- // Helper functions for formatting
5470 const formatTime = ( datetime : string ) => {
5571 const date = new Date ( datetime ) ;
5672 return date . toLocaleTimeString ( "en-US" , {
@@ -120,63 +136,61 @@ export default function SessionsPage() {
120136 </ >
121137 ) : (
122138 < >
123- { /* Session Card Display */ }
124139 < div className = "bg-card rounded-lg border border-default p-6 mb-6" >
125- { sessions . length > 0 && (
126- < div className = "space-y-4" >
127- < div className = "text-sm text-secondary mb-2" >
128- < div > Session Name</ div >
129- < div className = "font-semibold text-primary" >
130- { formatTime ( sessions [ 0 ] . start_datetime ) } -{ " " }
131- { formatTime ( sessions [ 0 ] . end_datetime ) } , Does not repeat
132- </ div >
133- { sessions [ 0 ] . location && (
134- < div className = "mt-1" > { sessions [ 0 ] . location } </ div >
135- ) }
140+ < div className = "space-y-4" >
141+ < div className = "text-sm text-secondary mb-2" >
142+ < div className = "font-semibold text-primary text-lg mb-1" >
143+ { sessions [ 0 ] . session_name }
136144 </ div >
145+ < div className = "font-semibold text-primary" >
146+ { formatTime ( sessions [ 0 ] . start_datetime ) } -{ " " }
147+ { formatTime ( sessions [ 0 ] . end_datetime ) } , Does not repeat
148+ </ div >
149+ { sessions [ 0 ] . location && (
150+ < div className = "mt-1" > { sessions [ 0 ] . location } </ div >
151+ ) }
152+ </ div >
137153
138- < div >
139- < div className = "text-sm text-secondary mb-2" > Students</ div >
140- < div className = "space-y-2" >
141- { loadingStudents ? (
142- < div className = "text-sm text-secondary" >
143- Loading students...
144- </ div >
145- ) : sessionStudents . length > 0 ? (
146- sessionStudents . map ( ( student : any ) => (
147- < div
148- key = { student . id }
149- className = "flex items-center gap-3 p-2 bg-background rounded-lg border border-default"
150- >
151- < Avatar
152- name = { getAvatarName (
153- student . first_name ,
154- student . last_name ,
155- student . id
156- ) }
157- variant = { getAvatarVariant ( student . id ) }
158- className = "w-8 h-8"
159- />
160- < span className = "text-sm text-primary" >
161- { student . first_name } { student . last_name }
162- </ span >
163- < span className = "text-xs text-secondary ml-auto" >
164- ID
165- </ span >
166- </ div >
167- ) )
168- ) : (
169- < div className = "text-sm text-secondary" >
170- No students in this session
154+ < div >
155+ < div className = "text-sm text-secondary mb-2" > Students</ div >
156+ < div className = "space-y-2" >
157+ { loadingStudents ? (
158+ < div className = "text-sm text-secondary" >
159+ Loading students...
160+ </ div >
161+ ) : sessionStudents . length > 0 ? (
162+ sessionStudents . map ( ( student : any ) => (
163+ < div
164+ key = { student . id }
165+ className = "flex items-center gap-3 p-2 bg-background rounded-lg border border-default"
166+ >
167+ < Avatar
168+ name = { getAvatarName (
169+ student . first_name ,
170+ student . last_name ,
171+ student . id
172+ ) }
173+ variant = { getAvatarVariant ( student . id ) }
174+ className = "w-8 h-8"
175+ />
176+ < span className = "text-sm text-primary" >
177+ { student . first_name } { student . last_name }
178+ </ span >
179+ < span className = "text-xs text-secondary ml-auto" >
180+ ID
181+ </ span >
171182 </ div >
172- ) }
173- </ div >
183+ ) )
184+ ) : (
185+ < div className = "text-sm text-secondary" >
186+ No students in this session
187+ </ div >
188+ ) }
174189 </ div >
175190 </ div >
176- ) }
191+ </ div >
177192 </ div >
178193
179- { /* Show other sessions as cards */ }
180194 { sessions . length > 1 && (
181195 < div className = "space-y-2 mb-6" >
182196 < p className = "text-sm text-secondary mb-2" >
@@ -217,4 +231,4 @@ export default function SessionsPage() {
217231 </ div >
218232 </ div >
219233 ) ;
220- }
234+ }
0 commit comments