HomePage.js 3.51 KB
Newer Older
Soo Hyun Kim's avatar
Soo Hyun Kim committed
1
import React, { useState, useEffect } from 'react';
Choi Ga Young's avatar
에러    
Choi Ga Young committed
2
import { Row, Col, Button } from 'react-bootstrap';
우지원's avatar
ul    
우지원 committed
3
4
5
6
import Tabs from 'react-bootstrap/Tabs';
import Tab from 'react-bootstrap/Tab';
import ClosedList from '../Components/ClosedList';
import OpenList from '../Components/OpenList';
Choi Ga Young's avatar
Choi Ga Young committed
7
import Menu from '../Components/Menu';
8
import { io } from "socket.io-client";   //모듈 가져오기
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
9
import Chat from "../Components/Chat";
Soo Hyun Kim's avatar
Soo Hyun Kim committed
10
11
import RoomMake from "../Components/RoomMake"
import EnterRoom from "../Components/EnterRoom"
우지원's avatar
ul    
우지원 committed
12

13
const socket = io();
우지원's avatar
ul    
우지원 committed
14
15

function Home() {
Soo Hyun Kim's avatar
Soo Hyun Kim committed
16
17
    const [showModal, setShowModal] = useState(false);
    const [showEnter, setEnter] = useState(false);
Soo Hyun Kim's avatar
Soo Hyun Kim committed
18
19
    const [chat, setChat] = useState(false);

Soo Hyun Kim's avatar
Soo Hyun Kim committed
20
    //소켓
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
21
    const [singleChat, setSingleChat] = useState('')
Soo Hyun Kim's avatar
Soo Hyun Kim committed
22
    const [recievedMsg, setRecievedMsg] = useState('')
Soo Hyun Kim's avatar
Soo Hyun Kim committed
23
    const [roomCode, setRoomCode] = useState('')
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
24

Soo Hyun Kim's avatar
Soo Hyun Kim committed
25
    //방참가
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
26

27
28
    const [roomName, setRoomName] = useState('')

Soo Hyun Kim's avatar
Soo Hyun Kim committed
29
30
31
32
    const handleCloseModal = () => setShowModal(false);
    const handleShowModal = () => setShowModal(true);
    const handleCloseEnter = () => setEnter(false);
    const handleShowEnter = () => setEnter(true);
Soo Hyun Kim's avatar
Soo Hyun Kim committed
33
34
35
    const handleChato = () => setChat(true);
    const handleChatc = () => setChat(false);

Choi Ga Young's avatar
Choi Ga Young committed
36

Soo Hyun Kim's avatar
Soo Hyun Kim committed
37

Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
38
    //SOCKET 관련 시작
39
    function enterChatRoom(rName) {    //방 입장하기
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
40
41
42
43
44
45
46
47
48
        socket.emit('joinRoom', rName)
        console.log(`joinRoom : ${rName} 입장`)
    }

    const sendMsg = (e) => {
        e.preventDefault()
    }

    useEffect(() => {
Choi Ga Young's avatar
Choi Ga Young committed
49
50
        if (!(singleChat == '')) {
            socket.emit("chat", {
51
                roomInfo: roomCode,
Choi Ga Young's avatar
Choi Ga Young committed
52
53
54
55
                msg: singleChat
            })
            setSingleChat([''])
        }
Soo Hyun Kim's avatar
Soo Hyun Kim committed
56
    }, [singleChat])
Choi Ga Young's avatar
에러    
Choi Ga Young committed
57
58


Soo Hyun Kim's avatar
Soo Hyun Kim committed
59
60
    useEffect(() => {
        socket.on("sendedMSG", (msg) => {
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
61
            console.log(msg)
Soo Hyun Kim's avatar
Soo Hyun Kim committed
62
            setRecievedMsg(msg)
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
63
        })
Soo Hyun Kim's avatar
Soo Hyun Kim committed
64
    }, [])
우지원's avatar
e    
우지원 committed
65

Soo Hyun Kim's avatar
Soo Hyun Kim committed
66
67
68
69
70
71
72
    return (
        <>
            <Menu />
            <Row className="mr-0">
                <Col className="list" md={5}>
                    <Tabs defaultActiveKey="closed" id="uncontrolled-tab-example">
                        <Tab eventKey="closed" title="내 채팅" onClick={handleChato} >
73
                            <ClosedList enterChatRoom={enterChatRoom} setRoomCode={setRoomCode} />
Soo Hyun Kim's avatar
Soo Hyun Kim committed
74
                        </Tab>
75
76
                        <Tab eventKey="open" title="공개방" onClick={handleChato}>
                            <OpenList enterChatRoom={enterChatRoom} setRoomCode={setRoomCode} />
Soo Hyun Kim's avatar
Soo Hyun Kim committed
77
78
79
80
                        </Tab>
                    </Tabs>
                </Col>
                <Col style={{ padding: "0" }}>
81
                    {chat ? <Chat handleChatc={handleChatc} sendMsg={sendMsg} singleChat={singleChat} recievedMsg={recievedMsg} setSingleChat={setSingleChat} roomCode={roomCode} /> : null}
우지원's avatar
ul    
우지원 committed
82

Soo Hyun Kim's avatar
Soo Hyun Kim committed
83
                    <div style={{ position: "fixed", bottom: "20px", right: "30px" }}>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
84
                        <Button variant="primary" onClick={handleShowModal} size="lg" block>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
85
86
                            생성
                        </Button>
우지원's avatar
ul    
우지원 committed
87

Soo Hyun Kim's avatar
Soo Hyun Kim committed
88
                        <Button variant="secondary" onClick={handleShowEnter} size="lg" block>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
89
90
91
92
93
                            참가
                        </Button>
                    </div>
                </Col>
            </Row>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
94
            <RoomMake showModal={showModal} handleCloseModal={handleCloseModal} />
Soo Hyun Kim's avatar
Soo Hyun Kim committed
95
            <EnterRoom showEnter={showEnter} enterChatRoom={enterChatRoom} handleCloseEnter={handleCloseEnter} handleChato={handleChato} setRoomName={setRoomName}/>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
96
97
        </>
    );
우지원's avatar
ul    
우지원 committed
98
99
100
}

export default Home;
101