diff --git a/server/reflector/views/rooms.py b/server/reflector/views/rooms.py index 128edfda..f9f7f4eb 100644 --- a/server/reflector/views/rooms.py +++ b/server/reflector/views/rooms.py @@ -1,9 +1,8 @@ from datetime import datetime, timedelta -from http.client import HTTPException from typing import Annotated, Optional import reflector.auth as auth -from fastapi import APIRouter, Depends +from fastapi import APIRouter, Depends, HTTPException from fastapi_pagination import Page from fastapi_pagination.ext.databases import paginate from pydantic import BaseModel diff --git a/www/app/[roomName]/page.tsx b/www/app/[roomName]/page.tsx index c28a2ee3..6f5b3e69 100644 --- a/www/app/[roomName]/page.tsx +++ b/www/app/[roomName]/page.tsx @@ -5,6 +5,7 @@ import { useCallback, useEffect, useRef, useState } from "react"; import { Box, Button, Text, VStack, HStack, Spinner } from "@chakra-ui/react"; import useRoomMeeting from "./useRoomMeeting"; import { useRouter } from "next/navigation"; +import { notFound } from "next/navigation"; import useSessionStatus from "../lib/useSessionStatus"; export type RoomDetails = { @@ -34,6 +35,17 @@ export default function Room(details: RoomDetails) { setConsentGiven(consent); }; + useEffect(() => { + if ( + !isLoading && + meeting?.error && + "status" in meeting.error && + meeting.error.status === 404 + ) { + notFound(); + } + }, [isLoading, meeting?.error]); + useEffect(() => { if (isLoading || !isAuthenticated || !roomUrl) return; diff --git a/www/app/[roomName]/useRoomMeeting.tsx b/www/app/[roomName]/useRoomMeeting.tsx index 8dcd4f15..84ca1145 100644 --- a/www/app/[roomName]/useRoomMeeting.tsx +++ b/www/app/[roomName]/useRoomMeeting.tsx @@ -3,6 +3,7 @@ import { useError } from "../(errors)/errorContext"; import { Meeting } from "../api"; import { shouldShowError } from "../lib/errorUtils"; import useApi from "../lib/useApi"; +import { notFound } from "next/navigation"; type ErrorMeeting = { error: Error; @@ -52,7 +53,7 @@ const useRoomMeeting = ( }) .catch((error) => { const shouldShowHuman = shouldShowError(error); - if (shouldShowHuman) { + if (shouldShowHuman && error.status !== 404) { setError( error, "There was an error loading the meeting. Please try again by refreshing the page."