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