HomePage.js 3.57 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() {
Choi Ga Young's avatar
Choi Ga Young committed
16
17
    const userName = sessionStorage.getItem('name')

Soo Hyun Kim's avatar
Soo Hyun Kim committed
18
19
    const [showModal, setShowModal] = useState(false);
    const [showEnter, setEnter] = useState(false);
Soo Hyun Kim's avatar
Soo Hyun Kim committed
20
21
    const [chat, setChat] = useState(false);

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

Soo Hyun Kim's avatar
Soo Hyun Kim committed
27
    //방참가
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
28

29
30
    const [roomName, setRoomName] = useState('')

Soo Hyun Kim's avatar
Soo Hyun Kim committed
31
32
33
34
    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
35
36
37
    const handleChato = () => setChat(true);
    const handleChatc = () => setChat(false);

Choi Ga Young's avatar
Choi Ga Young committed
38

Soo Hyun Kim's avatar
Soo Hyun Kim committed
39

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

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

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


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

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

Choi Ga Young's avatar
Choi Ga Young committed
85
                    {chat ? <Chat handleChatc={handleChatc} sendMsg={sendMsg} singleChat={singleChat} recievedMsg={recievedMsg} setSingleChat={setSingleChat} roomCode={roomCode} /> : <div style={{ position: "fixed", bottom: "20px", right: "30px" }}>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
86
                        <Button variant="primary" onClick={handleShowModal} size="lg" block>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
87
88
                            생성
                        </Button>
우지원's avatar
ul    
우지원 committed
89

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

export default Home;
103