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