HomePage.js 3.41 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

Soo Hyun Kim's avatar
Soo Hyun Kim committed
27
28
29
30
    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
31
32
33
    const handleChato = () => setChat(true);
    const handleChatc = () => setChat(false);

Choi Ga Young's avatar
Choi Ga Young committed
34

Soo Hyun Kim's avatar
Soo Hyun Kim committed
35

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

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

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


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

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

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

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

export default Home;
99