Commit fa6f60ff authored by seoyeon's avatar seoyeon
Browse files

Merge remote-tracking branch 'origin/woojiweon' into seoyeon2

parents b93dd13b 64628469
...@@ -14,6 +14,7 @@ app.use(express.json()); ...@@ -14,6 +14,7 @@ app.use(express.json());
app.use(express.urlencoded({ extended: true })); app.use(express.urlencoded({ extended: true }));
app.use(cookieParser()); app.use(cookieParser());
app.use('/uploads', express.static('uploads')) app.use('/uploads', express.static('uploads'))
app.use('/roomUploads', express.static('roomUploads'))
app.use("/api", mainRouter); app.use("/api", mainRouter);
let receiverPCs = {}; let receiverPCs = {};
......
...@@ -15,7 +15,7 @@ function App() { ...@@ -15,7 +15,7 @@ function App() {
{/* <AuthProvider> */} {/* <AuthProvider> */}
<Switch> <Switch>
<Route exact path="/" component={HomeGuestPage} /> <Route exact path="/" component={HomeGuestPage} />
<Route exact path="/user" component={HomeUserPage} /> <Route exact path="/user/:id" component={HomeUserPage} />
<Route exact path="/signup" component={SingupPage} /> <Route exact path="/signup" component={SingupPage} />
<Route exact path="/login" component={LoginPage} /> <Route exact path="/login" component={LoginPage} />
<Route path="/profile/:id/update" component={InfoUpdatePage} /> <Route path="/profile/:id/update" component={InfoUpdatePage} />
......
...@@ -5,8 +5,8 @@ const getRoom = async (payload) => { ...@@ -5,8 +5,8 @@ const getRoom = async (payload) => {
return data; return data;
}; };
const create = async (payload) => { const create = async (formData) => {
const { data } = await axios.post("/api/room/create", payload); const { data } = await axios.post("/api/room/create", formData);
return data; return data;
}; };
......
...@@ -2,6 +2,7 @@ import { Link } from 'react-router-dom' ...@@ -2,6 +2,7 @@ import { Link } from 'react-router-dom'
import { handleLogout } from '../context/auth' import { handleLogout } from '../context/auth'
const Header = () => { const Header = () => {
const id = localStorage.getItem('user');
return ( return (
<div> <div>
<form <form
...@@ -10,7 +11,7 @@ const Header = () => { ...@@ -10,7 +11,7 @@ const Header = () => {
> >
<div className="d-flex justify-content-end"> <div className="d-flex justify-content-end">
<div> <div>
<Link to="/user"> <Link to={`/user/${id}`}>
<img src="/BORA.png" style={{ width: '160px' }} /> <img src="/BORA.png" style={{ width: '160px' }} />
</Link> </Link>
</div> </div>
...@@ -51,14 +52,14 @@ const Header = () => { ...@@ -51,14 +52,14 @@ const Header = () => {
<div className="row mb-3"> <div className="row mb-3">
<div className="d-flex justify-content-evenly"> <div className="d-flex justify-content-evenly">
<Link to="/" className="col-2 p-1 btn btn-primary"> <Link to="/" className="col-2 p-1 btn btn-primary">
<button <button
type="submit" type="submit"
className="btn btn-primary" className="btn btn-primary"
onClick={() => handleLogout()} onClick={() => handleLogout()}
data-bs-dismiss="modal" data-bs-dismiss="modal"
> >
</button> </button>
</Link> </Link>
<button <button
type="submit" type="submit"
......
...@@ -11,6 +11,7 @@ const AddRoom = () => { ...@@ -11,6 +11,7 @@ const AddRoom = () => {
className="py-1 px-2" className="py-1 px-2"
data-bs-toggle="modal" data-bs-toggle="modal"
data-bs-target="#myModal" data-bs-target="#myModal"
// data-bs-dismiss="modal"
style={{ style={{
display: "flex", display: "flex",
flexDirection: "column", flexDirection: "column",
...@@ -72,6 +73,7 @@ const AddRoom = () => { ...@@ -72,6 +73,7 @@ const AddRoom = () => {
className="p-3" className="p-3"
data-bs-toggle="modal" data-bs-toggle="modal"
data-bs-target="#makeModal" data-bs-target="#makeModal"
// data-bs-dismiss="modal"
style={{ style={{
display: "flex", display: "flex",
flexDirection: "column", flexDirection: "column",
......
...@@ -3,11 +3,11 @@ import { Redirect, useParams } from "react-router-dom"; ...@@ -3,11 +3,11 @@ import { Redirect, useParams } from "react-router-dom";
import roomApi from "../../apis/room.api"; import roomApi from "../../apis/room.api";
import catchErrors from "../../context/catchError"; import catchErrors from "../../context/catchError";
const userId = localStorage.getItem('user'); const id = localStorage.getItem('user');
const INIT_ROOM = { const INIT_ROOM = {
name: '', name: '',
owner: userId, owner: id,
member: userId, member: id,
profileimg: '', profileimg: '',
} }
...@@ -43,9 +43,9 @@ const CreateRoom = () => { ...@@ -43,9 +43,9 @@ const CreateRoom = () => {
} }
if (success) { if (success) {
console.log('success', success) // console.log('success', success)
alert('룸생성이 완료되었습니다!') alert('룸생성이 완료되었습니다!')
window.location.href='/user' window.location.href=`/user/${id}`
} }
const { name, owner, member, profileimg } = room; const { name, owner, member, profileimg } = room;
......
...@@ -3,77 +3,84 @@ import { Redirect } from "react-router-dom"; ...@@ -3,77 +3,84 @@ import { Redirect } from "react-router-dom";
import roomApi from "../../apis/room.api"; import roomApi from "../../apis/room.api";
import catchErrors from "../../context/catchError"; import catchErrors from "../../context/catchError";
const userId = localStorage.getItem("user"); const id = localStorage.getItem("user");
const JoinRoom = () => { const JoinRoom = () => {
const [roomId, setRoomId] = useState(""); const [roomId, setRoomId] = useState("");
const [disabled, setDisabled] = useState(true); const [disabled, setDisabled] = useState(true);
const [error, setError] = useState(""); const [error, setError] = useState("");
const [success, setSuccess] = useState(false); const [success, setSuccess] = useState(false);
useEffect(() => { useEffect(() => {
const isRoom = Object.values(roomApi).every((el) => Boolean(el)); const isRoom = Object.values(roomApi).every((el) => Boolean(el));
isRoom ? setDisabled(false) : setDisabled(true); isRoom ? setDisabled(false) : setDisabled(true);
}, [roomId]); }, [roomId]);
function handleChange(event) { function handleChange(event) {
const { value } = event.target; const { value } = event.target;
setRoomId(value); setRoomId(value);
} }
async function handleSubmit(e) { async function handleSubmit(e) {
e.preventDefault(); e.preventDefault();
try { try {
// setLoading(true); // setLoading(true);
setError(""); setError("");
const data = await roomApi.join({ userId: userId, roomId: roomId }); const data = await roomApi.join({ userId: id, roomId: roomId });
setSuccess(true); setSuccess(true);
} catch (error) { } catch (error) {
catchErrors(error, setError); catchErrors(error, setError);
} finally { } finally {
// setLoading(false); // setLoading(false);
}
} }
}
if (success) {
return <Redirect to="/user" />;
}
return ( if (success) {
<div className="modal-content"> // console.log('success', success)
<form onSubmit={handleSubmit}> alert('룸참여가 완료되었습니다!')
<div className="modal-header"> window.location.href=`/user/${id}`
<div className="modal-title" id="joinModal"> // return <Redirect to={`/user/${id}`} />;
방참여하기 }
</div>
<button return (
type="button" <div className="modal-content">
className="btn-close" <form onSubmit={handleSubmit}>
data-bs-dismiss="modal" <div className="modal-header">
aria-label="Close" <div className="modal-title" id="joinModal">
></button> 방참여하기
</div> </div>
<div className="modal-body"> <button
<div className="input-group mb-3"> type="button"
<input className="btn-close"
type="text" data-bs-dismiss="modal"
className="form-control" aria-label="Close"
placeholder="참여코드를 입력하세요" ></button>
aria-label="참여코드를 입력하세요" </div>
aria-describedby="basic-addon1" <div className="modal-body">
name="roomId" {error && <div className="alert alert-danger">{error}</div>}
value={roomId} <div className="input-group mb-3">
onChange={handleChange} <input
/> type="text"
</div> className="form-control"
<div className="modal-footer"> placeholder="참여코드를 입력하세요"
<button type="submit" className="btn btn-primary"> aria-label="참여코드를 입력하세요"
확인 aria-describedby="basic-addon1"
</button> name="roomId"
</div> value={roomId}
onChange={handleChange}
/>
</div>
<div className="modal-footer">
<button
type="submit"
className="btn btn-primary">
확인
</button>
</div>
</div>
</form>
</div> </div>
</form> );
</div>
);
}; };
export default JoinRoom; export default JoinRoom;
...@@ -37,7 +37,7 @@ const RoomSingle = () => { ...@@ -37,7 +37,7 @@ const RoomSingle = () => {
return ( return (
<Link <Link
to={`/room/${id}/${channelId}`} to={`/room/${roomId}/${channelId}`}
className="text-decoration-none text-dark" className="text-decoration-none text-dark"
> >
<div <div
......
...@@ -4,6 +4,7 @@ import userApi from '../apis/user.api' ...@@ -4,6 +4,7 @@ import userApi from '../apis/user.api'
import catchErrors from '../context/catchError' import catchErrors from '../context/catchError'
import { handleLogin } from '../context/auth' import { handleLogin } from '../context/auth'
const INIT_USER = { const INIT_USER = {
userId: '9999',
email: '', email: '',
password: '', password: '',
} }
...@@ -13,6 +14,7 @@ const Login = () => { ...@@ -13,6 +14,7 @@ const Login = () => {
const [disabled, setDisabled] = useState(true) const [disabled, setDisabled] = useState(true)
const [error, setError] = useState('') const [error, setError] = useState('')
const [success, setSuccess] = useState(false) const [success, setSuccess] = useState(false)
const [id, setId] = useState('')
useEffect(() => { useEffect(() => {
const isUser = Object.values(user).every((el) => Boolean(el)) const isUser = Object.values(user).every((el) => Boolean(el))
...@@ -30,6 +32,8 @@ const Login = () => { ...@@ -30,6 +32,8 @@ const Login = () => {
// setLoading(true); // setLoading(true);
// setError(""); // setError("");
const data = await userApi.login(user) const data = await userApi.login(user)
console.log(data)
setId(data.id)
handleLogin(data.id) handleLogin(data.id)
setSuccess(true) setSuccess(true)
} catch (error) { } catch (error) {
...@@ -41,7 +45,7 @@ const Login = () => { ...@@ -41,7 +45,7 @@ const Login = () => {
} }
if (success) { if (success) {
alert('로그인 되었습니다'); alert('로그인 되었습니다');
window.location.href='/user' window.location.href=`/user/${id}`
} }
const { email, password } = user const { email, password } = user
......
...@@ -34,6 +34,7 @@ const InfoUpdate = () => { ...@@ -34,6 +34,7 @@ const InfoUpdate = () => {
const handleChange = async (event) => { const handleChange = async (event) => {
const { files } = event.target; const { files } = event.target;
console.log('files:',files)
let formData = new FormData(); let formData = new FormData();
formData.append("img", files[0]); formData.append("img", files[0]);
formData.append("id", userprofile); formData.append("id", userprofile);
......
...@@ -4,12 +4,14 @@ import LeftHamburger from './LeftHamburger'; ...@@ -4,12 +4,14 @@ import LeftHamburger from './LeftHamburger';
import RightHamburger from './RightHamburger'; import RightHamburger from './RightHamburger';
const ChannelList = () => { const ChannelList = () => {
const id = localStorage.getItem('user');
return ( return (
<div> <div>
<nav className="navbar navbar-light d-flex justify-content-between"> <nav className="navbar navbar-light d-flex justify-content-between">
<LeftHamburger /> <LeftHamburger />
<div> <div>
<Link to="/user"> <Link to={`/user/${id}`}>
<img src="/BORA.png" style={{ width: '160px' }} /> <img src="/BORA.png" style={{ width: '160px' }} />
</Link> </Link>
</div> </div>
......
...@@ -105,7 +105,7 @@ const RightHamberger = () => { ...@@ -105,7 +105,7 @@ const RightHamberger = () => {
</div> </div>
<div className="row mb-3"> <div className="row mb-3">
<div className="d-flex justify-content-evenly"> <div className="d-flex justify-content-evenly">
{/* <Link to="/user"> */} {/* <Link to="/user/:id"> */}
<button <button
type="submit" type="submit"
className="col-2 p-1 btn btn-primary" className="col-2 p-1 btn btn-primary"
......
...@@ -10,7 +10,7 @@ const InvitePage = () => { ...@@ -10,7 +10,7 @@ const InvitePage = () => {
function Invitereject() { function Invitereject() {
// if () //초대받은 사람이 로그인 o // if () //초대받은 사람이 로그인 o
// <Link to="/user"></Link>//유저 페이지로 이동. // <Link to="/user/:id"></Link>//유저 페이지로 이동.
// else //로그인x // else //로그인x
// <Link to="/"></Link> //메인화면으로 이동. // <Link to="/"></Link> //메인화면으로 이동.
} }
......
...@@ -42,14 +42,19 @@ const joinRoom = async (req, res) => { ...@@ -42,14 +42,19 @@ const joinRoom = async (req, res) => {
} }
}; };
const multer = require("multer");
const upLoadRoomImg = multer({ dest: "roomUploads/" });
const roomImgUpload = upLoadRoomImg.fields([{ name: "profileimg", maxCount: 1 }]);
const createRoom = async (req, res) => { const createRoom = async (req, res) => {
// console.log('룸정보', req.body) const { userId, name } = req.body;
const { name, owner, member, profileimg } = req.body; const avatar = req.files["profileimg"][0];
const id = nanoid(); const img = avatar.filename;
const id = nanoid()
const Id = await Room.findOne({ where: { id: id } }); const Id = await Room.findOne({ where: { id: id } });
// console.log('id:', id) // console.log('id:', id)
while (Boolean(Id)) { while (Id) {
const id = nanoid(); const id = nanoid()
const Id = await Room.findOne({ where: { id: id } }); const Id = await Room.findOne({ where: { id: id } });
} }
try { try {
...@@ -60,28 +65,24 @@ const createRoom = async (req, res) => { ...@@ -60,28 +65,24 @@ const createRoom = async (req, res) => {
const newRoom = { const newRoom = {
id: id, id: id,
name: name, name: name,
owner: owner, owner: userId,
member: [member], member: [userId],
profileimg: profileimg, profileimg: img,
}; }
// console.log('newRoom:', newRoom) // console.log('newRoom:', newRoom)
await Room.create(newRoom); await Room.create(newRoom);
//user.roomNumber에 id추가 //user.roomNumber에 id추가
const user_Id = await User.findOne({ where: { id: owner } }); const user_Id = await User.findOne({ where: { id: userId } });
if (Boolean(user_Id.roomNumber)) { if (user_Id.roomNumber) { //다른 roomNumber가 이미 들어가 있는 경우 id추가
//다른 roomNumber가 이미 들어가 있는 경우 id추가 user_Id.roomNumber.push(id)
user_Id.roomNumber.push(id); }
} else { else { //첫 roomNumber인 경우
//첫 roomNumber인 경우 user_Id.roomNumber = [id]
user_Id.roomNumber = [id];
} }
// console.log('user_Id.roomNumber2:', user_Id.roomNumber) // console.log('user_Id.roomNumber2:', user_Id.roomNumber)
await User.update( await User.update({ 'roomNumber': user_Id.roomNumber }, { where: { id: userId } })
{ roomNumber: user_Id.roomNumber }, res.json(newRoom)
{ where: { id: owner } }
);
res.json(newRoom);
} catch (error) { } catch (error) {
console.log(error); console.log(error);
res.status(500).send("방생성 에러"); res.status(500).send("방생성 에러");
...@@ -102,7 +103,5 @@ const getRoom = async (req, res) => { ...@@ -102,7 +103,5 @@ const getRoom = async (req, res) => {
}; };
export default { export default {
joinRoom, joinRoom, roomImgUpload, createRoom, getRoom
createRoom,
getRoom,
}; };
...@@ -28,7 +28,7 @@ sequelize ...@@ -28,7 +28,7 @@ sequelize
name: "room", name: "room",
owner: 8888, owner: 8888,
member: [8888,9999], member: [8888,9999],
profileimg: "C:\fakepath\스크린샷(1).png", profileimg: "ef0930f6be18ce73380d952337a6de1f",
}); });
await Room.create({ await Room.create({
...@@ -36,7 +36,7 @@ sequelize ...@@ -36,7 +36,7 @@ sequelize
name: "room1", name: "room1",
owner: 9999, owner: 9999,
member: [9999], member: [9999],
profileimg: "C:\fakepath\스크린샷(1).png", profileimg: "ef0930f6be18ce73380d952337a6de1f",
}); });
app.listen(appConfig.port, () => { app.listen(appConfig.port, () => {
......
...@@ -3,7 +3,7 @@ import roomCrtl from "../controllers/room.controller.js"; ...@@ -3,7 +3,7 @@ import roomCrtl from "../controllers/room.controller.js";
const router = express.Router(); const router = express.Router();
router.route("/getRoom").post(roomCrtl.getRoom); router.route("/getRoom").post(roomCrtl.getRoom);
router.route("/create").post(roomCrtl.createRoom); router.route("/create").post(roomCrtl.roomImgUpload, roomCrtl.createRoom);
router.route("/join").put(roomCrtl.joinRoom); router.route("/join").put(roomCrtl.joinRoom);
export default router; export default router;
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment