HomePage.js 3.5 KB
Newer Older
1
import React, { useState, useEffect } from 'react';
Soo Hyun Kim's avatar
Soo Hyun Kim committed
2
3
import axios from 'axios';
import { Row, Col, Modal, Button, Form, Alert } from 'react-bootstrap';
Choi Ga Young's avatar
Choi Ga Young committed
4
5
6
7
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
8
import Menu from '../Components/Menu';
Soo Hyun Kim's avatar
Soo Hyun Kim committed
9
import catchErrors from '../utils/catchErrors';
10
import { io } from "socket.io-client";   //모듈 가져오기
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
11
import Chat from "../Components/Chat";
Soo Hyun Kim's avatar
Soo Hyun Kim committed
12
13
import RoomMake from "../Components/RoomMake"
import EnterRoom from "../Components/EnterRoom"
14

15
const socket = io();
16

Choi Ga Young's avatar
Choi Ga Young committed
17
function Home() {
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
soo0115    
Soo Hyun Kim committed
25
    const [roomName, setRoomName] = useState('')
Soo Hyun Kim's avatar
Soo Hyun Kim committed
26
    const [roomCode, setRoomCode] = useState('')
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
27

Soo Hyun Kim's avatar
Soo Hyun Kim committed
28
29
30
31
32
33
34
    //방참가
    const [roomId, setRoomId] = useState('')

    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
    const handleChato = () => setChat(true);
    const handleChatc = () => setChat(false);
Soo Hyun Kim's avatar
Soo Hyun Kim committed
37
38
    
    
Soo Hyun Kim's avatar
Soo Hyun Kim committed
39

Soo Hyun Kim's avatar
Soo Hyun Kim committed
40
    //SOCKET 함수
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
41

Soo Hyun Kim's avatar
Soo Hyun Kim committed
42
43
44
    function enterChatRoom(roomCode) {    //방 입장하기
        socket.emit('joinRoom', roomCode)
        console.log(`joinRoom : ${roomCode} 입장`)
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
45
46
47
48
49
50
51
52
    }

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

    useEffect(() => {
        socket.emit("chat", {
Soo Hyun Kim's avatar
Soo Hyun Kim committed
53
            roomName: roomCode,
Soo Hyun Kim's avatar
soo0115    
Soo Hyun Kim committed
54
55
            msg: singleChat
        })
Soo Hyun Kim's avatar
Soo Hyun Kim committed
56
57
58
59
60
    }, [singleChat])
    
    
    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
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} >
Soo Hyun Kim's avatar
Soo Hyun Kim committed
73
                            <ClosedList enterChatroom={enterChatRoom} setRoomName={setRoomName}/>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
74
75
                        </Tab>
                        <Tab eventKey="open" title="공개방" >
Soo Hyun Kim's avatar
Soo Hyun Kim committed
76
                            <OpenList enterChatroom={enterChatRoom} setRoomName={setRoomName}/>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
77
78
79
80
                        </Tab>
                    </Tabs>
                </Col>
                <Col style={{ padding: "0" }}>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
81
                    {chat ? <Chat handleChatc={handleChatc} sendMsg={sendMsg} singleChat={singleChat} recievedMsg={recievedMsg} setSingleChat={setSingleChat} roomName={roomName}/> : 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
95
            <RoomMake showModal={showModal} handleCloseModal={handleCloseModal} />
            <EnterRoom showEnter={showEnter} enterChatRoom={enterChatRoom} handleCloseEnter={handleCloseEnter}/>
Soo Hyun Kim's avatar
Soo Hyun Kim committed
96
97
        </>
    );
98
99
}

Choi Ga Young's avatar
Choi Ga Young committed
100
export default Home;