import React from "react"; import { Modal, Button, Badge } from "react-bootstrap"; import ModalVideo from "../../../../ModalVideo/ModalVideo"; import opentok from "../../../../../controllers/opentok"; import socketIOClient from "socket.io-client"; import { UserId, addUserToRoom, removeUserFromRoom, getRoomId, increaseUserFromRoom, joinInRoomId } from "../../../../../controllers/ApiRequests"; class JoinRoomModal extends React.Component { state = { joined: false, userId: null, roomId: null, userToken: null }; onSubmit = async () => { // verify if user can join const user_id = await UserId(this.props.email); const roomId = await getRoomId(this.props.sessionId); const is_able = await joinInRoomId(roomId); if (is_able) { console.log("Joining..."); const socket = socketIOClient(`${process.env.REACT_APP_SOCKECT_URL}`); const user_token = await opentok.generateToken(this.props.sessionId); await addUserToRoom(roomId, user_id); await increaseUserFromRoom(roomId); this.setState({ joined: true, userToken: user_token, userId: user_id, roomId: roomId }); socket.emit("closeUserSignal", true); this.props.onUpdate(); } }; handleClose = async () => { await removeUserFromRoom(this.state.roomId, this.state.userId); this.props.handleClose(); }; render() { if (!this.state.joined) { return ( <Modal show={this.props.show} onHide={this.handleClose}> <Modal.Header closeButton> <Modal.Title> {" "} <p> <Badge variant="warning">{this.props.lang}</Badge> {this.props.level} </p> </Modal.Title> </Modal.Header> <Modal.Body> <p>Woohoo, you're aboout to join this call!</p> </Modal.Body> <Modal.Footer> <Button variant="secondary" onClick={this.props.handleClose}> Cancel </Button> <Button variant="primary" onClick={this.onSubmit}> Join Call </Button> </Modal.Footer> </Modal> ); } else { return ( <ModalVideo show={true} sessionId={this.props.sessionId} token={this.state.userToken} roomId={this.state.roomId} userId={this.state.userId} onUpdate={this.props.onUpdate} handleClose={this.handleClose} email={this.props.email} username2={this.props.username} img={this.props.img} /> ); } } } export default JoinRoomModal;