Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Team meetings #156

Closed
wants to merge 65 commits into from
Closed
Show file tree
Hide file tree
Changes from 43 commits
Commits
Show all changes
65 commits
Select commit Hold shift + click to select a range
9f2b23a
Create notifications page
JANKROL123 Mar 18, 2024
c094faa
Add new content for create room button
JANKROL123 Mar 18, 2024
1d1e272
Create RoomCallPage for team meetings
JANKROL123 Mar 18, 2024
85dc043
Create Dockerfile for peer server, but currently cannot use compose
JANKROL123 Mar 19, 2024
d9ff9d8
Install peerjs package at create peer
JANKROL123 Mar 19, 2024
dcd6f2d
Add peer server to compose yml
JANKROL123 Mar 20, 2024
ef93ab2
Create fetchUserMedia function
JANKROL123 Mar 20, 2024
bd871f5
Enable local media stream for room video tag
JANKROL123 Mar 20, 2024
726ffd5
Create endpoints for room router
JANKROL123 Mar 20, 2024
03fddfe
Handle notifications via HTTP protocol
JANKROL123 Mar 20, 2024
ba2435c
Add notifications by WebSocket and Redux
JANKROL123 Mar 20, 2024
a3b525b
Delete unused properties from Notifications Page
JANKROL123 Mar 20, 2024
fa26989
Create delete endpoint for room
JANKROL123 Mar 20, 2024
dcb3680
Configuring peer in room call page
JANKROL123 Mar 21, 2024
e8b5be6
New user joins room
JANKROL123 Mar 21, 2024
ac4801c
Enable team meetings
JANKROL123 Mar 21, 2024
bc318c4
Rename 'peer' service to 'peer-server'
JANKROL123 Mar 22, 2024
aeac431
Fix friends fetching problem but moving fetching function higher to p…
JANKROL123 Mar 22, 2024
2eca4ee
Change socket listening on notifications location on Profile Page
JANKROL123 Mar 22, 2024
064e06c
Add filtering to redux in order to make notifications unique
JANKROL123 Mar 22, 2024
ed3c313
Generate uuid for rooms
JANKROL123 Mar 22, 2024
446bce8
Store current meeting members in collection
JANKROL123 Mar 23, 2024
65eda3b
Add user's id to peer id
JANKROL123 Mar 23, 2024
2294781
Add fixes to repair meetings
JANKROL123 Mar 24, 2024
7b9e4af
Add basic code cleanup
JANKROL123 Mar 24, 2024
2e11dc6
Create new interface RoomPeer
JANKROL123 Mar 24, 2024
ad3ced1
Maintain version without interface list
JANKROL123 Mar 24, 2024
ddb99ea
Store data in object
JANKROL123 Mar 24, 2024
1f1a6b6
Add a little code clenup in RoomCallPage
JANKROL123 Mar 24, 2024
2f6948a
Add endpoint to return user's full name
JANKROL123 Mar 24, 2024
4c84e5a
Handle users' names in under video tags
JANKROL123 Mar 24, 2024
3535e07
Add mute buttons in rooms
JANKROL123 Mar 25, 2024
298ff99
Handle leave room
JANKROL123 Mar 25, 2024
4a81598
Unable to invite a friend who has already been in meeting
JANKROL123 Mar 25, 2024
332df49
Improve style of create team meeting button
JANKROL123 Mar 25, 2024
ccef59c
Add styles for notifications
JANKROL123 Mar 25, 2024
b5bcb9a
Center mute buttons in team eetings
JANKROL123 Mar 25, 2024
f737033
Center users' names under video tags
JANKROL123 Mar 27, 2024
ce1f0d0
Add styled list of potential peers
JANKROL123 Mar 27, 2024
197205d
Add new types and remove as many 'any' types as possible
JANKROL123 Mar 27, 2024
d31e3df
Make cleanup with flex videos in room call page
JANKROL123 Mar 27, 2024
3a70b9e
Add prettier code styling
JANKROL123 Mar 27, 2024
d9fc3b8
Merge branch 'dev' into team-meetings
JANKROL123 Mar 27, 2024
98be0d9
Delete unused imports
JANKROL123 Mar 29, 2024
3d76e26
Apply formatting
JANKROL123 Mar 29, 2024
60b723e
Add friends fetching to UserProvider
JANKROL123 Mar 30, 2024
1803a40
Apply formatting
JANKROL123 Mar 30, 2024
0668f7a
Delete all friends utils from redux
JANKROL123 Mar 30, 2024
ecb7848
Add return true in fetch friends
JANKROL123 Mar 30, 2024
94eda93
Fix problems if peer doesn't exist
JANKROL123 Mar 30, 2024
976223b
Fix problem where we see blank page after going from /room to /profile
JANKROL123 Mar 31, 2024
144fd6b
Add browser dependencies
JANKROL123 Apr 1, 2024
ecb20e6
Redirect to login page if peer or user is not defined
JANKROL123 Apr 1, 2024
c5ce88f
Move peer and notifications from redux to user provider
JANKROL123 Apr 1, 2024
9413a47
Apply formatting
JANKROL123 Apr 1, 2024
129df8d
Create local peer server based on express server
JANKROL123 Apr 1, 2024
c332caf
Fix peer problems and using container again
JANKROL123 Apr 2, 2024
9d5a72f
Fix peer problems in notifications page
JANKROL123 Apr 2, 2024
dc50083
Disable invite button if invitation has already been sent
JANKROL123 Apr 2, 2024
779384f
Restore previous version with no disabling button
JANKROL123 Apr 2, 2024
34d3d7e
Delete notification with HTTP method after declining it
JANKROL123 Apr 2, 2024
cc065ba
Create rooms in Neo4j with MERGE command
JANKROL123 Apr 6, 2024
5c46ad9
Move socket listening on 'newRoom' event to UserProvider
JANKROL123 Apr 6, 2024
7344a39
Add clearing rooms in Neo4j for cleanUpData function
JANKROL123 Apr 7, 2024
32619b8
Add prettier to code
JANKROL123 Apr 7, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions backend/src/httpServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import usersRouter from "./routes/usersRoute";
import authRouter from "./routes/authRoute";
import chatRouter from "./routes/chatRoute";
import { cleanUpData, importInitialData } from "./db";
import roomRouter from "./routes/roomRoute";

const { app } = servers;

Expand All @@ -15,3 +16,4 @@ importInitialData().then((res) => console.log(res));
app.use("/users", usersRouter);
app.use("/auth", authRouter);
app.use("/chat", chatRouter);
app.use("/room", roomRouter);
75 changes: 75 additions & 0 deletions backend/src/routes/roomRoute.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import { Router } from "express";
import { isFriend } from "../users";
import driver from "../driver/driver";
const roomRouter = Router();

roomRouter.get("/:userId", async (req, res) => {
try {
const userId = req.params.userId;
const session = driver.session();
const roomsQuery = await session.run(
`
MATCH (room:Room)-[:INVITED]-(u:User {id: $userId})
RETURN room
`,
{ userId },
);
await session.close();
const rooms = roomsQuery.records
.map((record) => record.get("room").properties)
.map((record) => ({
...record,
title: "Join meeting",
}));
return res.json({ status: "ok", rooms });
} catch (err) {
console.log("Error:", err);
return res.status(404).json({ status: "error", errors: err as object });
}
});

roomRouter.post("/", async (req, res) => {
try {
const newRoomProps = req.body;
const { roomId, from, to } = newRoomProps;
const session = driver.session();
const areFriends = await isFriend(session, from, to);
if (!areFriends) {
await session.close();
return res
.status(400)
.json({ status: "error", errors: { id: "no friends" } });
}
await session.run(`CREATE (r: Room $room)`, { room: newRoomProps });
await session.run(
`
MATCH (u:User {id: $userId})
MATCH (r:Room {roomId: $roomId})
CREATE (r)-[:INVITED]->(u)
`,
{ userId: to, roomId },
);
await session.close();
return res.json({ status: "ok" });
} catch (err) {
console.log("Error:", err);
return res.status(404).json({ status: "error", errors: err as object });
}
});

roomRouter.delete("/:roomId", async (req, res) => {
try {
const roomId = req.params.roomId;
const session = driver.session();
await session.run(`MATCH (r:Room {roomId: $roomId}) DETACH DELETE r`, {
roomId,
});
await session.close();
return res.json({ status: "ok" });
} catch (err) {
console.log("Error:", err);
return res.status(404).json({ status: "error", errors: err as object });
}
});

export default roomRouter;
24 changes: 24 additions & 0 deletions backend/src/routes/usersRoute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -234,6 +234,30 @@ usersRouter.get("/meetings/:userId", async (req: Request, res) => {
}
});

usersRouter.get("/:userId/name", async (req, res) => {
try {
const userId = req.params.userId;
const session = driver.session();
const user = await userExists(session, { id: userId });
if (!user) {
return userNotFoundRes(res);
}
const userNameRequest = await session.run(
`MATCH (u:User {id: $userId}) return u`,
{ userId },
);
await session.close();
const userData: User = userNameRequest.records.map((u) =>
filterUser(u.get("u").properties),
)[0];
const fullName = `${userData.first_name} ${userData.last_name}`;
return res.json({ status: "ok", fullName });
} catch (err) {
console.log("Error:", err);
return res.status(404).json({ status: "error", errors: err as object });
}
});

usersRouter.put("/meetings/:meetingId", async (req: Request, res) => {
try {
const session = driver.session();
Expand Down
28 changes: 28 additions & 0 deletions backend/src/socketServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,34 @@ io.on("connection", async (socket: Socket) => {
});
});

socket.on("newRoom", async ({ roomId, from, to, userName }) => {
await socket.join(roomId);
const session = driver.session();
const userSockets = await getAllSockets(session, to);
userSockets.forEach((userSocket) => {
socket.to(userSocket.id).emit("newRoom", {
from,
roomId,
title: "Join room",
to,
userName,
});
});
await session.close();
});

socket.on("joinRoom", async ({ roomId, peerId, userId, fullName }) => {
await socket.join(roomId);
socket
.to(roomId)
.emit("userConnected", { peerId, userId, fullName, socketId: socket.id });
});

socket.on("leftRoom", async ({ userId, roomId }) => {
await socket.join(roomId);
socket.to(roomId).emit("leftRoom", userId);
});

socket.on("disconnect", async (_reason) => {
const session = driver.session();
await leaveMeeting(session, userId);
Expand Down
5 changes: 5 additions & 0 deletions compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ services:
ports:
- 5173:80

peer-server:
build: ./peer-server
ports:
- 8000:8000

backend:
build: ./backend
env_file:
Expand Down
Loading
Loading