@@ -2,7 +2,7 @@ import { Stack, Typography } from '@mui/material';
2
2
import { useDispatch , useSelector } from 'react-redux' ;
3
3
4
4
import Button from '@mui/material/Button' ;
5
- import React from 'react' ;
5
+ import React , { useState } from 'react' ;
6
6
import { RootState } from '../../redux/store' ;
7
7
import TextField from '@mui/material/TextField' ;
8
8
import { allCooperativeState } from '../../redux/reducers/slice/appStateSlice' ;
@@ -21,8 +21,10 @@ import debounce from '../../../../node_modules/lodash/debounce.js';
21
21
let socket ;
22
22
const { API_BASE_URL } = config ;
23
23
const RoomsContainer = ( ) => {
24
- const [ roomCode , setRoomCode ] = React . useState ( '' ) ;
25
- const [ confirmRoom , setConfirmRoom ] = React . useState ( '' ) ;
24
+ const [ roomCode , setRoomCode ] = useState ( '' ) ;
25
+ const [ confirmRoom , setConfirmRoom ] = useState ( '' ) ;
26
+ const [ userJoined , setUserJoined ] = useState ( false ) ; //setting up state for joinning a room
27
+ const [ emptyInput , setEmptyInput ] = useState ( false ) ;
26
28
const dispatch = useDispatch ( ) ;
27
29
const { state, joinedRoom } = useSelector ( ( store : RootState ) => ( {
28
30
state : store . appState ,
@@ -115,10 +117,19 @@ const RoomsContainer = () => {
115
117
setConfirmRoom ( ( confirmRoom ) => roomCode ) ;
116
118
// Call handleUserEnteredRoom when joining a room
117
119
handleUserEnteredRoom ( roomCode ) ;
120
+ setUserJoined ( true ) ; //setting joined room to true for rendering leave room button
118
121
}
122
+
123
+ function leaveRoom ( ) {
124
+ if ( socket ) socket . disconnect ( ) ; //disconnecting socket
125
+ dispatch ( changeRoom ( '' ) ) ;
126
+ setRoomCode ( '' ) ;
127
+ setUserJoined ( false ) ; //setting joined to false so join button appear
128
+ }
129
+
119
130
return (
120
131
< div >
121
- < Stack
132
+ < Stack //stack styling for container
122
133
spacing = { 2 }
123
134
sx = { {
124
135
paddingTop : '20px' ,
@@ -128,44 +139,57 @@ const RoomsContainer = () => {
128
139
} }
129
140
>
130
141
{ ' ' }
142
+ { /* live room display */ }
131
143
< Typography variant = "h6" color = { 'white' } >
132
144
Live Room: { joinedRoom }
133
145
</ Typography >
134
- < TextField
135
- hiddenLabel
136
- id = "filled-hidden-label-small"
137
- variant = "filled"
138
- size = "small"
139
- onChange = { ( e ) => setRoomCode ( e . target . value ) }
140
- />
141
- { /* <input
142
- type="text"
143
- style={{
144
- margin: '3px 5%',
145
- borderRadius: '5px',
146
- padding: '3px',
147
- width: '90%'
148
- }}
149
- placeholder="Room Code"
150
- onChange={(e) => setRoomCode(e.target.value)}
151
- ></input> */ }
152
- < Button
153
- variant = "contained"
154
- onClick = { ( ) => joinRoom ( ) }
155
- sx = { {
156
- backgroundColor : '#ffffff' ,
157
- color : '#000000' ,
158
- '&:hover' : {
159
- backgroundColor : '#C6C6C6' ,
160
- borderColor : '#0062cc' ,
161
- boxShadow : 'none'
162
- }
163
- } }
164
- >
165
- Join Room
166
- </ Button >
146
+ { /* Set up condition rendering depends on if user joined a room then render leave button if not render join button */ }
147
+ { userJoined ? (
148
+ < Button
149
+ variant = "contained"
150
+ onClick = { ( ) => leaveRoom ( ) }
151
+ sx = { {
152
+ backgroundColor : '#ffffff' ,
153
+ color : '#000000' ,
154
+ '&:hover' : {
155
+ backgroundColor : '#C6C6C6' ,
156
+ borderColor : '#0062cc'
157
+ }
158
+ } }
159
+ >
160
+ { ' ' }
161
+ Leave Room{ ' ' }
162
+ </ Button >
163
+ ) : (
164
+ < >
165
+ < TextField
166
+ hiddenLabel = { true }
167
+ id = "filled-hidden-label-small"
168
+ variant = "filled"
169
+ size = "small"
170
+ value = { roomCode }
171
+ placeholder = "Input Room Number"
172
+ onChange = { ( e ) => setRoomCode ( e . target . value ) }
173
+ />
174
+ < Button
175
+ variant = "contained"
176
+ disabled = { roomCode . trim ( ) === '' }
177
+ onClick = { ( ) => joinRoom ( ) }
178
+ sx = { {
179
+ backgroundColor : '#ffffff' ,
180
+ color : '#000000' ,
181
+ '&:hover' : {
182
+ backgroundColor : '#C6C6C6' ,
183
+ borderColor : '#0062cc'
184
+ }
185
+ } }
186
+ >
187
+ { ' ' }
188
+ Join Room{ ' ' }
189
+ </ Button >
190
+ </ >
191
+ ) }
167
192
</ Stack >
168
- { /* <button onClick={() => joinRoom()}>Join Room</button> */ }
169
193
</ div >
170
194
) ;
171
195
} ;
0 commit comments