1
- import React , { useEffect , useState } from "react" ;
2
- import { SessionChat } from "@/components/Session/SessionChat" ;
3
- import { useNavigate , useSearchParams } from "react-router-dom" ;
4
- import Controllers , { Controller } from "@/components/Session/Controllers" ;
5
1
import CallMembers from "@/components/Session/CallMembers" ;
6
- import { useMediaCall } from "@/hooks/mediaCall" ;
2
+ import Controllers , { Controller } from "@/components/Session/Controllers" ;
3
+ import PostSessionDialogs from "@/components/Session/PostSessionDialogs" ;
4
+ import { SessionChat } from "@/components/Session/SessionChat" ;
7
5
import { RemoteMember } from "@/components/Session/types" ;
8
- import { AlertType , AlertV2 } from "@litespace/ui/Alert" ;
9
- import { useRender } from "@litespace/headless/common" ;
6
+ import { useOnError } from "@/hooks/error" ;
7
+ import { useMediaCall } from "@/hooks/mediaCall" ;
8
+ import dayjs from "@/lib/dayjs" ;
10
9
import { Device , MemberConnectionState } from "@/modules/MediaCall/types" ;
11
- import { useFormatMessage } from "@litespace/ui/hooks/intl" ;
12
- import { Button } from "@litespace/ui/Button" ;
10
+ import CallIncoming from "@litespace/assets/CallIncoming" ;
13
11
import Close2 from "@litespace/assets/Close2" ;
14
- import { ISession , IUser , Wss } from "@litespace/types" ;
15
- import { useSocket } from "@litespace/headless/socket" ;
16
- import { useCreateReport } from "@litespace/headless/report" ;
12
+ import { useRender } from "@litespace/headless/common" ;
17
13
import { useUser } from "@litespace/headless/context/user" ;
18
- import dayjs from "@/lib/dayjs" ;
19
- import { useOnError } from "@/hooks/error" ;
20
- import { useToast } from "@litespace/ui/Toast" ;
21
14
import { useReportLesson } from "@litespace/headless/lessons" ;
22
- import { Web } from "@litespace/utils/routes" ;
15
+ import { useCreateReport } from "@litespace/headless/report" ;
16
+ import { useSocket } from "@litespace/headless/socket" ;
17
+ import { ISession , IUser , Wss } from "@litespace/types" ;
18
+ import { AlertType , AlertV2 } from "@litespace/ui/Alert" ;
19
+ import { Button } from "@litespace/ui/Button" ;
23
20
import { ConfirmationDialog } from "@litespace/ui/ConfirmationDialog" ;
24
- import CallIncoming from "@litespace/assets/CallIncoming" ;
21
+ import { useFormatMessage } from "@litespace/ui/hooks/intl" ;
22
+ import { useToast } from "@litespace/ui/Toast" ;
25
23
import { MIN_LESSON_DURATION } from "@litespace/utils" ;
24
+ import { Web } from "@litespace/utils/routes" ;
25
+ import React , { useEffect , useState } from "react" ;
26
+ import { useNavigate , useSearchParams } from "react-router-dom" ;
26
27
27
28
const InSession : React . FC < {
28
29
sessionId : ISession . Id ;
@@ -55,6 +56,8 @@ const InSession: React.FC<{
55
56
const [ _ , setParams ] = useSearchParams ( ) ;
56
57
const [ newMessageIndicator , setNewMessageIndicator ] = useState < number > ( 0 ) ;
57
58
59
+ const [ postSession , setPostSession ] = useState ( false ) ;
60
+
58
61
const [ connState , setConnState ] = useState <
59
62
MemberConnectionState | undefined
60
63
> ( ) ;
@@ -309,7 +312,7 @@ const InSession: React.FC<{
309
312
call . manager ?. session . disconnect ( ) . then (
310
313
// this approach makes the lesson page more robust by avoiding
311
314
// akward scenarios. Like livekit not emitting the disconnect event.
312
- ( ) => document . location . reload ( )
315
+ ( ) => setPostSession ( true )
313
316
)
314
317
}
315
318
audio = { controllers . audio }
@@ -336,6 +339,13 @@ const InSession: React.FC<{
336
339
open = { reportLessonDialog . open }
337
340
close = { reportLessonDialog . hide }
338
341
/>
342
+
343
+ { user ?. role === IUser . Role . Student ? (
344
+ < PostSessionDialogs
345
+ postSession = { postSession }
346
+ tutorName = { remoteMember . name }
347
+ />
348
+ ) : null }
339
349
</ div >
340
350
) ;
341
351
} ;
0 commit comments