diff --git a/controllers/profile/postProfile.ts b/controllers/profile/postProfile.ts index 1a9cfa6..a50ec7e 100644 --- a/controllers/profile/postProfile.ts +++ b/controllers/profile/postProfile.ts @@ -1,6 +1,8 @@ import { Request, Response } from 'express'; +import { getRepository } from 'typeorm'; import { Users } from '../../src/entity/Users'; import { Stacks } from '../../src/entity/Stacks'; +import { Projects } from '../../src/entity/Projects'; import * as fs from 'fs'; import randomColorGenerator from '../login/randomColorGenerator'; @@ -66,10 +68,26 @@ const postProfile = async (req: Request, res: Response) => { } foundUser.stacks = stackArray; const saved = await foundUser.save(); + // project 데이터 가져오기 + const allProjects = await getRepository(Projects).find({ + relations: ['members'], + order: { + createdAt: 'DESC', // 순서: 최신순 + }, + }); + let projectList = []; + for (let idx = 0; idx < allProjects.length; idx++) { + let members: number[] = allProjects[idx].members.map(el => el.id); + if (members.includes(foundUser.id)) { + let obj = { ...allProjects[idx], members }; + projectList.push(obj); + } + } res.status(200).json({ ...saved, career: career !== undefined && career !== '' ? JSON.parse(saved.career) : '{}', stacks: stackArray.map(el => el.name), + projectList, }); } else { res.status(400).json({ diff --git a/controllers/project/deleteProject.ts b/controllers/project/deleteProject.ts index 7525142..1c7f295 100644 --- a/controllers/project/deleteProject.ts +++ b/controllers/project/deleteProject.ts @@ -21,7 +21,9 @@ const deleteProject = async (req: Request, res: Response) => { project: foundProject, }, }); - await delRooms.forEach(el => el.remove()); + for (let idx = 0; idx < delRooms.length; idx++) { + await delRooms[idx].remove(); + } // chats 정보 삭제 const foundChats = await getRepository(Chats).find({ join: { diff --git a/controllers/recruit/deleteComment.ts b/controllers/recruit/deleteComment.ts index 71a4ad3..4822774 100644 --- a/controllers/recruit/deleteComment.ts +++ b/controllers/recruit/deleteComment.ts @@ -12,7 +12,7 @@ const deleteComment = async (req: Request, res: Response) => { let boardInfo; try { boardInfo = await getRepository(Recruits).findOne({ - relations: ['writer'], + relations: ['writer', 'stacks'], where: { id: boardId, }, diff --git a/controllers/recruit/registerComment.ts b/controllers/recruit/registerComment.ts index 96faacc..8450671 100644 --- a/controllers/recruit/registerComment.ts +++ b/controllers/recruit/registerComment.ts @@ -18,7 +18,7 @@ const registerComment = async (req: Request, res: Response) => { }); if (foundUser) { const foundBoard = await getRepository(Recruits).findOne({ - relations: ['writer'], + relations: ['writer', 'stacks'], where: { id: boardId, }, diff --git a/controllers/workspace/socketWebRTC.ts b/controllers/workspace/socketWebRTC.ts index 73b3d94..cc064fe 100644 --- a/controllers/workspace/socketWebRTC.ts +++ b/controllers/workspace/socketWebRTC.ts @@ -24,6 +24,21 @@ const socketWebRTC = async (socket: Socket) => { socket.emit('all users', usersInThisRoom); }); + socket.on('leave room', roomID => { + console.log('리브!!!', roomID); + + for (let i = 0; i < users[roomID].length; i++) { + if (users[roomID][i] === socket.id) { + users[roomID].splice(i, 1); + i--; + } + } + + delete socketToRoom[socket.id]; + const usersInThisRoom = users[roomID].filter((id: string) => id !== socket.id); + + socket.emit('all users', usersInThisRoom); + }); socket.on('sending signal', payload => { socket.to(payload.userToSignal).emit('user joined', { signal: payload.signal, callerID: payload.callerID }); diff --git a/uploads/Calendar.gif b/uploads/Calendar.gif index 74f2e2d..c8b479b 100644 Binary files a/uploads/Calendar.gif and b/uploads/Calendar.gif differ diff --git a/uploads/Kanbanboard.gif b/uploads/Kanbanboard.gif new file mode 100644 index 0000000..31b845f Binary files /dev/null and b/uploads/Kanbanboard.gif differ