@@ -88,60 +88,63 @@ export const WaitingRoom = ({ socketPort, setIsModalOpen }: IWaitingRoomProps) =
88
88
89
89
socket . on ( WS_EVENT . CONNECT , ( ) => {
90
90
console . log ( 'Connected to server' ) ;
91
- socket . emit ( WS_EVENT . JOIN_ROOM , socketPort ) ;
92
- socket . emit ( WS_EVENT . START_QUEUING , {
93
- roomId : socketPort ,
94
- userId : getUserId ( ) ,
95
- topic : values ?. selectedTopics ,
96
- difficulty : values ?. difficulty ,
97
- } ) ;
98
- socket . on ( MATCHING_EVENT . QUEUED , ( ) => {
99
- setUIState ( ( prevState ) => ( { ...prevState , connected : true } ) ) ;
100
- } ) ;
101
-
102
- socket . on ( WS_EVENT . MESSAGE , ( data ) => {
103
- console . log ( 'Message from server:' , data ) ;
104
- } ) ;
105
-
106
- socket . on ( MATCHING_EVENT . MATCHING , ( ) => {
107
- console . log ( 'Matching in progress' ) ;
108
- setUIState ( ( prev ) => ( { ...prev , canCancel : false } ) ) ;
109
- } ) ;
110
-
111
- socket . on ( MATCHING_EVENT . PENDING , ( ) => {
112
- console . log ( 'Waiting in pool' ) ;
113
- setUIState ( ( prev ) => ( { ...prev , canCancel : true } ) ) ;
114
- } ) ;
115
-
116
- socket . on ( MATCHING_EVENT . SUCCESS , ( data ) => {
117
- console . log ( `Received match: ${ JSON . stringify ( data ) } ` ) ;
118
-
119
- const roomId = data ?. roomId ;
120
- const questionId = data ?. questionId ;
121
- countdownRef . current = 0 ;
122
- clearInterval ( timerRef . current ! ) ;
123
-
124
- setUIState ( ( prevState ) => ( { ...prevState , uiState : UI_STATUS . SUCCESS_STATUS } ) ) ;
125
- updateDescription ( `RoomId: ${ roomId } \nQuestionId: ${ questionId } ` ) ;
126
- socket . close ( ) ;
127
- } ) ;
128
-
129
- socket . on ( MATCHING_EVENT . FAILED , ( ) => {
130
- countdownRef . current = 0 ;
131
- setUIState ( ( prevState ) => ( { ...prevState , uiState : UI_STATUS . FAILED_STATUS } ) ) ;
132
- } ) ;
133
-
134
- socket . on ( MATCHING_EVENT . ERROR , ( errorMessage : string ) => {
135
- countdownRef . current = 0 ;
136
- setUIState ( ( prevState ) => ( {
137
- ...prevState ,
138
- uiState : { ...UI_STATUS . FAILED_STATUS , description : errorMessage } ,
139
- } ) ) ;
140
- } ) ;
141
-
142
- socket . on ( MATCHING_EVENT . DISCONNECT , ( ) => {
143
- socket . close ( ) ;
144
- } ) ;
91
+ } ) ;
92
+
93
+ socket . emit ( WS_EVENT . JOIN_ROOM , socketPort ) ;
94
+
95
+ socket . emit ( WS_EVENT . START_QUEUING , {
96
+ roomId : socketPort ,
97
+ userId : getUserId ( ) ,
98
+ topic : values ?. selectedTopics ,
99
+ difficulty : values ?. difficulty ,
100
+ } ) ;
101
+
102
+ socket . on ( MATCHING_EVENT . QUEUED , ( ) => {
103
+ setUIState ( ( prevState ) => ( { ...prevState , connected : true } ) ) ;
104
+ } ) ;
105
+
106
+ socket . on ( WS_EVENT . MESSAGE , ( data ) => {
107
+ console . log ( 'Message from server:' , data ) ;
108
+ } ) ;
109
+
110
+ socket . on ( MATCHING_EVENT . MATCHING , ( ) => {
111
+ console . log ( 'Matching in progress' ) ;
112
+ setUIState ( ( prev ) => ( { ...prev , canCancel : false } ) ) ;
113
+ } ) ;
114
+
115
+ socket . on ( MATCHING_EVENT . PENDING , ( ) => {
116
+ console . log ( 'Waiting in pool' ) ;
117
+ setUIState ( ( prev ) => ( { ...prev , canCancel : true } ) ) ;
118
+ } ) ;
119
+
120
+ socket . on ( MATCHING_EVENT . SUCCESS , ( data ) => {
121
+ console . log ( `Received match: ${ JSON . stringify ( data ) } ` ) ;
122
+
123
+ const roomId = data ?. roomId ;
124
+ const questionId = data ?. questionId ;
125
+ countdownRef . current = 0 ;
126
+ clearInterval ( timerRef . current ! ) ;
127
+
128
+ setUIState ( ( prevState ) => ( { ...prevState , uiState : UI_STATUS . SUCCESS_STATUS } ) ) ;
129
+ updateDescription ( `RoomId: ${ roomId } \nQuestionId: ${ questionId } ` ) ;
130
+ socket . close ( ) ;
131
+ } ) ;
132
+
133
+ socket . on ( MATCHING_EVENT . FAILED , ( ) => {
134
+ countdownRef . current = 0 ;
135
+ setUIState ( ( prevState ) => ( { ...prevState , uiState : UI_STATUS . FAILED_STATUS } ) ) ;
136
+ } ) ;
137
+
138
+ socket . on ( MATCHING_EVENT . ERROR , ( errorMessage : string ) => {
139
+ countdownRef . current = 0 ;
140
+ setUIState ( ( prevState ) => ( {
141
+ ...prevState ,
142
+ uiState : { ...UI_STATUS . FAILED_STATUS , description : errorMessage } ,
143
+ } ) ) ;
144
+ } ) ;
145
+
146
+ socket . on ( MATCHING_EVENT . DISCONNECT , ( ) => {
147
+ socket . close ( ) ;
145
148
} ) ;
146
149
147
150
return ( ) => {
@@ -170,7 +173,24 @@ export const WaitingRoom = ({ socketPort, setIsModalOpen }: IWaitingRoomProps) =
170
173
< h1 className = 'mb-4 text-3xl' > { uiState . header } </ h1 >
171
174
< div className = 'flex flex-col items-center justify-center' >
172
175
{ uiState . icon }
173
- < p className = 'mt-4 whitespace-pre-wrap text-lg' > { uiState . description } </ p >
176
+ { uiState . description . startsWith ( 'RoomId' ) ? (
177
+ < p className = 'flex flex-col gap-1' >
178
+ < div className = 'flex flex-col gap-0' >
179
+ < label className = 'text-lg' > Room Id:</ label >
180
+ < span className = 'text-md max-w-[400px] truncate text-balance font-mono' >
181
+ { uiState . description . split ( '\nQuestionId: ' ) [ 0 ] . replace ( 'RoomId:' , '' ) }
182
+ </ span >
183
+ </ div >
184
+ < div className = 'flex flex-col' >
185
+ < label className = 'text-lg' > Question Id:</ label >
186
+ < span className = 'font-mono text-lg' >
187
+ { uiState . description . split ( '\nQuestionId: ' ) [ 1 ] }
188
+ </ span >
189
+ </ div >
190
+ </ p >
191
+ ) : (
192
+ < p className = 'mt-4 whitespace-pre-wrap text-lg' > { uiState . description } </ p >
193
+ ) }
174
194
</ div >
175
195
{ countdownRef . current > 0 || isCancelling ? (
176
196
< Button
@@ -182,7 +202,14 @@ export const WaitingRoom = ({ socketPort, setIsModalOpen }: IWaitingRoomProps) =
182
202
Cancel
183
203
</ Button >
184
204
) : (
185
- < Button className = 'mt-5' variant = 'outline' onClick = { ( ) => setIsModalOpen ( false ) } >
205
+ < Button
206
+ className = 'mt-5'
207
+ variant = 'outline'
208
+ onClick = { ( ) => {
209
+ setIsModalOpen ( false ) ;
210
+ // form?.reset()
211
+ } }
212
+ >
186
213
Back
187
214
</ Button >
188
215
) }
0 commit comments