From 6cd13d1cf112dbc62431dc15e75a035e2f1227ff Mon Sep 17 00:00:00 2001 From: atridadl Date: Wed, 22 Nov 2023 16:00:27 -0700 Subject: [PATCH] Better error handling --- app/routes/api.room.get.$roomId.tsx | 11 +++++++++++ app/routes/api.room.presence.get.$roomId.tsx | 13 ++++++++++++- app/routes/api.votes.get.$roomId.tsx | 13 ++++++++++++- app/routes/room.$roomId.tsx | 16 +++++++++------- 4 files changed, 44 insertions(+), 9 deletions(-) diff --git a/app/routes/api.room.get.$roomId.tsx b/app/routes/api.room.get.$roomId.tsx index 085ffb7..1e36b64 100644 --- a/app/routes/api.room.get.$roomId.tsx +++ b/app/routes/api.room.get.$roomId.tsx @@ -26,6 +26,17 @@ export async function loader({ context, params, request }: LoaderFunctionArgs) { }); } + const room = await db.query.rooms.findFirst({ + where: eq(rooms.id, roomId), + }); + + if (!room) { + return json("Room is Missing!", { + status: 404, + statusText: "BAD REQUEST!", + }); + } + return eventStream(request.signal, function setup(send) { async function handler() { const roomFromDb = await db.query.rooms.findFirst({ diff --git a/app/routes/api.room.presence.get.$roomId.tsx b/app/routes/api.room.presence.get.$roomId.tsx index ffdcd7c..0f2e925 100644 --- a/app/routes/api.room.presence.get.$roomId.tsx +++ b/app/routes/api.room.presence.get.$roomId.tsx @@ -4,7 +4,7 @@ import { and, eq } from "drizzle-orm"; import { eventStream } from "remix-utils/sse/server"; import { db } from "~/services/db.server"; import { emitter } from "~/services/emitter.server"; -import { presence } from "~/services/schema"; +import { presence, rooms } from "~/services/schema"; import { createId } from "@paralleldrive/cuid2"; export async function loader({ context, params, request }: LoaderFunctionArgs) { @@ -26,6 +26,17 @@ export async function loader({ context, params, request }: LoaderFunctionArgs) { }); } + const room = await db.query.rooms.findFirst({ + where: eq(rooms.id, roomId), + }); + + if (!room) { + return json("Room is Missing!", { + status: 404, + statusText: "BAD REQUEST!", + }); + } + const name = sessionClaims.name as string; const image = sessionClaims.image as string; const metadata = sessionClaims.metadata as { diff --git a/app/routes/api.votes.get.$roomId.tsx b/app/routes/api.votes.get.$roomId.tsx index 30be487..98f698b 100644 --- a/app/routes/api.votes.get.$roomId.tsx +++ b/app/routes/api.votes.get.$roomId.tsx @@ -4,7 +4,7 @@ import { eq } from "drizzle-orm"; import { eventStream } from "remix-utils/sse/server"; import { db } from "~/services/db.server"; import { emitter } from "~/services/emitter.server"; -import { votes } from "~/services/schema"; +import { rooms, votes } from "~/services/schema"; // Get Room List export async function loader({ context, params, request }: LoaderFunctionArgs) { @@ -26,6 +26,17 @@ export async function loader({ context, params, request }: LoaderFunctionArgs) { }); } + const room = await db.query.rooms.findFirst({ + where: eq(rooms.id, roomId), + }); + + if (!room) { + return json("Room is Missing!", { + status: 404, + statusText: "BAD REQUEST!", + }); + } + return eventStream(request.signal, function setup(send) { async function handler() { const votesByRoomId = await db.query.votes.findMany({ diff --git a/app/routes/room.$roomId.tsx b/app/routes/room.$roomId.tsx index 16db1a7..55c80ee 100644 --- a/app/routes/room.$roomId.tsx +++ b/app/routes/room.$roomId.tsx @@ -47,7 +47,9 @@ export default function Room() { event: `${user?.id}-${params.roomId}`, }); - let roomFromDbParsed = JSON.parse(roomFromDb!) as RoomResponse | undefined; + let roomFromDbParsed = (roomFromDb ? JSON.parse(roomFromDb!) : undefined) as + | RoomResponse + | undefined; let votesFromDbParsed = JSON.parse(votesFromDb!) as VoteResponse | undefined; let presenceDateParsed = JSON.parse(presenceData!) as | PresenceItem[] @@ -124,7 +126,7 @@ export default function Room() { }; const downloadLogs = () => { - if (roomFromDb && votesFromDb) { + if (roomFromDbParsed && votesFromDbParsed) { const jsonObject = roomFromDbParsed?.logs .map((item) => { return { @@ -206,16 +208,16 @@ export default function Room() { // UI // ================================= // Room is loading - if (!roomFromDbParsed) { + if (roomFromDbParsed === null) { return ; // Room has been loaded } else { return roomFromDb ? (
-
{roomFromDbParsed.roomName}
+
{roomFromDbParsed?.roomName}
ID:
-
{roomFromDbParsed.id}
+
{roomFromDbParsed?.id}