Better error handling
This commit is contained in:
parent
f70a6393eb
commit
df66277d30
4 changed files with 44 additions and 9 deletions
|
@ -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) {
|
return eventStream(request.signal, function setup(send) {
|
||||||
async function handler() {
|
async function handler() {
|
||||||
const roomFromDb = await db.query.rooms.findFirst({
|
const roomFromDb = await db.query.rooms.findFirst({
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { and, eq } from "drizzle-orm";
|
||||||
import { eventStream } from "remix-utils/sse/server";
|
import { eventStream } from "remix-utils/sse/server";
|
||||||
import { db } from "~/services/db.server";
|
import { db } from "~/services/db.server";
|
||||||
import { emitter } from "~/services/emitter.server";
|
import { emitter } from "~/services/emitter.server";
|
||||||
import { presence } from "~/services/schema";
|
import { presence, rooms } from "~/services/schema";
|
||||||
import { createId } from "@paralleldrive/cuid2";
|
import { createId } from "@paralleldrive/cuid2";
|
||||||
|
|
||||||
export async function loader({ context, params, request }: LoaderFunctionArgs) {
|
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 name = sessionClaims.name as string;
|
||||||
const image = sessionClaims.image as string;
|
const image = sessionClaims.image as string;
|
||||||
const metadata = sessionClaims.metadata as {
|
const metadata = sessionClaims.metadata as {
|
||||||
|
|
|
@ -4,7 +4,7 @@ import { eq } from "drizzle-orm";
|
||||||
import { eventStream } from "remix-utils/sse/server";
|
import { eventStream } from "remix-utils/sse/server";
|
||||||
import { db } from "~/services/db.server";
|
import { db } from "~/services/db.server";
|
||||||
import { emitter } from "~/services/emitter.server";
|
import { emitter } from "~/services/emitter.server";
|
||||||
import { votes } from "~/services/schema";
|
import { rooms, votes } from "~/services/schema";
|
||||||
|
|
||||||
// Get Room List
|
// Get Room List
|
||||||
export async function loader({ context, params, request }: LoaderFunctionArgs) {
|
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) {
|
return eventStream(request.signal, function setup(send) {
|
||||||
async function handler() {
|
async function handler() {
|
||||||
const votesByRoomId = await db.query.votes.findMany({
|
const votesByRoomId = await db.query.votes.findMany({
|
||||||
|
|
|
@ -47,7 +47,9 @@ export default function Room() {
|
||||||
event: `${user?.id}-${params.roomId}`,
|
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 votesFromDbParsed = JSON.parse(votesFromDb!) as VoteResponse | undefined;
|
||||||
let presenceDateParsed = JSON.parse(presenceData!) as
|
let presenceDateParsed = JSON.parse(presenceData!) as
|
||||||
| PresenceItem[]
|
| PresenceItem[]
|
||||||
|
@ -124,7 +126,7 @@ export default function Room() {
|
||||||
};
|
};
|
||||||
|
|
||||||
const downloadLogs = () => {
|
const downloadLogs = () => {
|
||||||
if (roomFromDb && votesFromDb) {
|
if (roomFromDbParsed && votesFromDbParsed) {
|
||||||
const jsonObject = roomFromDbParsed?.logs
|
const jsonObject = roomFromDbParsed?.logs
|
||||||
.map((item) => {
|
.map((item) => {
|
||||||
return {
|
return {
|
||||||
|
@ -206,16 +208,16 @@ export default function Room() {
|
||||||
// UI
|
// UI
|
||||||
// =================================
|
// =================================
|
||||||
// Room is loading
|
// Room is loading
|
||||||
if (!roomFromDbParsed) {
|
if (roomFromDbParsed === null) {
|
||||||
return <LoadingIndicator />;
|
return <LoadingIndicator />;
|
||||||
// Room has been loaded
|
// Room has been loaded
|
||||||
} else {
|
} else {
|
||||||
return roomFromDb ? (
|
return roomFromDb ? (
|
||||||
<div className="flex flex-col gap-4 text-center justify-center items-center">
|
<div className="flex flex-col gap-4 text-center justify-center items-center">
|
||||||
<div className="text-2xl">{roomFromDbParsed.roomName}</div>
|
<div className="text-2xl">{roomFromDbParsed?.roomName}</div>
|
||||||
<div className="flex flex-row flex-wrap text-center justify-center items-center gap-1 text-md">
|
<div className="flex flex-row flex-wrap text-center justify-center items-center gap-1 text-md">
|
||||||
<div>ID:</div>
|
<div>ID:</div>
|
||||||
<div>{roomFromDbParsed.id}</div>
|
<div>{roomFromDbParsed?.id}</div>
|
||||||
|
|
||||||
<button>
|
<button>
|
||||||
{copied ? (
|
{copied ? (
|
||||||
|
@ -233,7 +235,7 @@ export default function Room() {
|
||||||
<div className="card card-compact bg-base-100 shadow-xl">
|
<div className="card card-compact bg-base-100 shadow-xl">
|
||||||
<div className="card-body">
|
<div className="card-body">
|
||||||
<h2 className="card-title mx-auto">
|
<h2 className="card-title mx-auto">
|
||||||
Story: {roomFromDbParsed.storyName}
|
Story: {roomFromDbParsed?.storyName}
|
||||||
</h2>
|
</h2>
|
||||||
|
|
||||||
<ul className="p-0 flex flex-row flex-wrap justify-center items-center text-ceter gap-4">
|
<ul className="p-0 flex flex-row flex-wrap justify-center items-center text-ceter gap-4">
|
||||||
|
@ -304,7 +306,7 @@ export default function Room() {
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<div className="join md:btn-group-horizontal mx-auto">
|
<div className="join md:btn-group-horizontal mx-auto">
|
||||||
{roomFromDbParsed.scale?.split(",").map((scaleItem, index) => {
|
{roomFromDbParsed?.scale?.split(",").map((scaleItem, index) => {
|
||||||
return (
|
return (
|
||||||
<button
|
<button
|
||||||
key={index}
|
key={index}
|
||||||
|
|
Loading…
Add table
Reference in a new issue