Skip to content

Commit

Permalink
Add prettier code styling
Browse files Browse the repository at this point in the history
  • Loading branch information
JANKROL123 committed Mar 27, 2024
1 parent d31e3df commit 3a70b9e
Show file tree
Hide file tree
Showing 23 changed files with 469 additions and 417 deletions.
2 changes: 1 addition & 1 deletion backend/src/httpServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ importInitialData().then((res) => console.log(res));
app.use("/users", usersRouter);
app.use("/auth", authRouter);
app.use("/chat", chatRouter);
app.use("/room", roomRouter);
app.use("/room", roomRouter);
104 changes: 56 additions & 48 deletions backend/src/routes/roomRoute.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,64 +4,72 @@ 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(`
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 });
}
`,
{ 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(`
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 });
}
`,
{ 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 });
}
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;
export default roomRouter;
14 changes: 8 additions & 6 deletions backend/src/socketServer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -143,28 +143,30 @@ io.on("connection", async (socket: Socket) => {
});
});

socket.on("newRoom", async ({roomId, from, to, userName}) => {
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 => {
userSockets.forEach((userSocket) => {
socket.to(userSocket.id).emit("newRoom", {
from,
roomId,
title: "Join room",
to,
userName
userName,
});
});
await session.close();
});

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

socket.on("leftRoom", async ({userId, roomId}) => {
socket.on("leftRoom", async ({ userId, roomId }) => {
await socket.join(roomId);
socket.to(roomId).emit("leftRoom", userId);
});
Expand Down
50 changes: 27 additions & 23 deletions frontend/src/components/Notification.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,28 +2,32 @@ import RoomNotification from "../models/RoomNotification";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import { faTrash, faVideo } from "@fortawesome/free-solid-svg-icons";
interface NotificationProps {
roomNotification: RoomNotification;
handleRoomInvite: (id: string) => void;
declineInvite: (id: string) => void;
roomNotification: RoomNotification;
handleRoomInvite: (id: string) => void;
declineInvite: (id: string) => void;
}
function Notification({roomNotification, handleRoomInvite, declineInvite}: NotificationProps) {
return (
<div className="bg-my-light-dark p-3 text-xl rounded-2xl font-normal flex items-center gap-x-10">
{roomNotification.userName} has invited you to meeting
<button
onClick={() => handleRoomInvite(roomNotification.roomId)}
className="btn small bg-my-green flex gap-x-4"
>
<FontAwesomeIcon icon={faVideo} />
Accept
</button>
<button
onClick={() => declineInvite(roomNotification.roomId)}
className="btn bg-my-red small flex justify-center items-center"
>
<FontAwesomeIcon icon={faTrash} />
</button>
</div>
)
function Notification({
roomNotification,
handleRoomInvite,
declineInvite,
}: NotificationProps) {
return (
<div className="bg-my-light-dark p-3 text-xl rounded-2xl font-normal flex items-center gap-x-10">
{roomNotification.userName} has invited you to meeting
<button
onClick={() => handleRoomInvite(roomNotification.roomId)}
className="btn small bg-my-green flex gap-x-4"
>
<FontAwesomeIcon icon={faVideo} />
Accept
</button>
<button
onClick={() => declineInvite(roomNotification.roomId)}
className="btn bg-my-red small flex justify-center items-center"
>
<FontAwesomeIcon icon={faTrash} />
</button>
</div>
);
}
export default Notification;
export default Notification;
59 changes: 29 additions & 30 deletions frontend/src/components/PeerInvite.tsx
Original file line number Diff line number Diff line change
@@ -1,36 +1,35 @@
import User from "../models/User";

export interface PeerInviteProps {
friend: User;
inviteFriendToRoom: (id: string) => void;
friend: User;
inviteFriendToRoom: (id: string) => void;
}

function PeerInvite({friend, inviteFriendToRoom}: PeerInviteProps) {
return (
<li className="flex flex-row justify-center gap-4">
<img
src={friend.profile_picture}
className="rounded-full w-14 h-14 border-my-orange border-2 object-cover"
/>
<div className="flex flex-col justify-evenly items-center gap-2">
<p className="font-semibold">
<span className="">
{" "}
{friend.first_name} {friend.last_name}{" "}
</span>
</p>
<div className="flex flex-col xl:flex-row">
<button
className={`btn small bg-my-green text-xs`}
onClick={() => inviteFriendToRoom(friend.id)}
>
invite
</button>
</div>

function PeerInvite({ friend, inviteFriendToRoom }: PeerInviteProps) {
return (
<li className="flex flex-row justify-center gap-4">
<img
src={friend.profile_picture}
className="rounded-full w-14 h-14 border-my-orange border-2 object-cover"
/>
<div className="flex flex-col justify-evenly items-center gap-2">
<p className="font-semibold">
<span className="">
{" "}
{friend.first_name} {friend.last_name}{" "}
</span>
</p>
<div className="flex flex-col xl:flex-row">
<button
className={`btn small bg-my-green text-xs`}
onClick={() => inviteFriendToRoom(friend.id)}
>
invite
</button>
</div>
</li>
);
}

</div>
</li>
);
}

export default PeerInvite;

52 changes: 27 additions & 25 deletions frontend/src/components/RoomPeerVideo.tsx
Original file line number Diff line number Diff line change
@@ -1,32 +1,34 @@
import { useEffect, useRef, useState } from "react";
import dataService from "../services/data";
interface RoomPeerVideoProps {
remoteStream: MediaStream;
peerId: string;
remoteStream: MediaStream;
peerId: string;
}
function RoomPeerVideo({remoteStream, peerId}: RoomPeerVideoProps) {
const remoteRef = useRef<HTMLVideoElement>(null);
const [name, setName] = useState("");
const fetchFullName = async () => {
const fullNameRequest = await dataService.fetchData(`/users/${peerId}/name`, "GET", {});
const fullName = fullNameRequest.fullName;
setName(fullName);
function RoomPeerVideo({ remoteStream, peerId }: RoomPeerVideoProps) {
const remoteRef = useRef<HTMLVideoElement>(null);
const [name, setName] = useState("");
const fetchFullName = async () => {
const fullNameRequest = await dataService.fetchData(
`/users/${peerId}/name`,
"GET",
{},
);
const fullName = fullNameRequest.fullName;
setName(fullName);
};
useEffect(() => {
if (remoteStream) {
remoteRef.current!.srcObject = remoteStream;
remoteRef.current!.play();
}
useEffect(() => {
if (remoteStream) {
remoteRef.current!.srcObject = remoteStream;
remoteRef.current!.play();
}
fetchFullName();
}, []);
return (
<div className="flex flex-col items-center gap-4">
<video
ref={remoteRef}
></video>
<div>{name}</div>
</div>
)
fetchFullName();
}, []);
return (
<div className="flex flex-col items-center gap-4">
<video ref={remoteRef}></video>
<div>{name}</div>
</div>
);
}

export default RoomPeerVideo;
export default RoomPeerVideo;
12 changes: 6 additions & 6 deletions frontend/src/media/fetchUserMedia.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
async function fetchUserMedia() {
const localStream = await navigator.mediaDevices.getUserMedia({
video: true,
audio: true
});
return localStream;
const localStream = await navigator.mediaDevices.getUserMedia({
video: true,
audio: true,
});
return localStream;
}

export default fetchUserMedia;
export default fetchUserMedia;
12 changes: 6 additions & 6 deletions frontend/src/models/RoomNotification.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
interface RoomNotification {
from: string;
roomId: string;
title: string;
to: string;
userName: string;
from: string;
roomId: string;
title: string;
to: string;
userName: string;
}
export default RoomNotification;
export default RoomNotification;
8 changes: 4 additions & 4 deletions frontend/src/models/RoomPeer.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
interface RoomPeer {
peerId?: string;
stream: MediaStream;
fullName?: string;
peerId?: string;
stream: MediaStream;
fullName?: string;
}
export default RoomPeer;
export default RoomPeer;
Loading

0 comments on commit 3a70b9e

Please sign in to comment.