mirror of
				https://github.com/ItzCrazyKns/Perplexica.git
				synced 2025-11-04 04:38:15 +00:00 
			
		
		
		
	feat(chat-window): handle notFound errors
This commit is contained in:
		@@ -9,6 +9,7 @@ import crypto from 'crypto';
 | 
				
			|||||||
import { toast } from 'sonner';
 | 
					import { toast } from 'sonner';
 | 
				
			||||||
import { useSearchParams } from 'next/navigation';
 | 
					import { useSearchParams } from 'next/navigation';
 | 
				
			||||||
import { getSuggestions } from '@/lib/actions';
 | 
					import { getSuggestions } from '@/lib/actions';
 | 
				
			||||||
 | 
					import Error from 'next/error';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
export type Message = {
 | 
					export type Message = {
 | 
				
			||||||
  messageId: string;
 | 
					  messageId: string;
 | 
				
			||||||
@@ -158,6 +159,7 @@ const loadMessages = async (
 | 
				
			|||||||
  setIsMessagesLoaded: (loaded: boolean) => void,
 | 
					  setIsMessagesLoaded: (loaded: boolean) => void,
 | 
				
			||||||
  setChatHistory: (history: [string, string][]) => void,
 | 
					  setChatHistory: (history: [string, string][]) => void,
 | 
				
			||||||
  setFocusMode: (mode: string) => void,
 | 
					  setFocusMode: (mode: string) => void,
 | 
				
			||||||
 | 
					  setNotFound: (notFound: boolean) => void,
 | 
				
			||||||
) => {
 | 
					) => {
 | 
				
			||||||
  const res = await fetch(
 | 
					  const res = await fetch(
 | 
				
			||||||
    `${process.env.NEXT_PUBLIC_API_URL}/chats/${chatId}`,
 | 
					    `${process.env.NEXT_PUBLIC_API_URL}/chats/${chatId}`,
 | 
				
			||||||
@@ -169,6 +171,12 @@ const loadMessages = async (
 | 
				
			|||||||
    },
 | 
					    },
 | 
				
			||||||
  );
 | 
					  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  if (res.status === 404) {
 | 
				
			||||||
 | 
					    setNotFound(true);
 | 
				
			||||||
 | 
					    setIsMessagesLoaded(true);
 | 
				
			||||||
 | 
					    return;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const data = await res.json();
 | 
					  const data = await res.json();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  const messages = data.messages.map((msg: any) => {
 | 
					  const messages = data.messages.map((msg: any) => {
 | 
				
			||||||
@@ -190,7 +198,6 @@ const loadMessages = async (
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  setChatHistory(history);
 | 
					  setChatHistory(history);
 | 
				
			||||||
  setFocusMode(data.chat.focusMode);
 | 
					  setFocusMode(data.chat.focusMode);
 | 
				
			||||||
  console.log(data);
 | 
					 | 
				
			||||||
  setIsMessagesLoaded(true);
 | 
					  setIsMessagesLoaded(true);
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -221,6 +228,8 @@ const ChatWindow = ({ id }: { id?: string }) => {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
  const [isMessagesLoaded, setIsMessagesLoaded] = useState(false);
 | 
					  const [isMessagesLoaded, setIsMessagesLoaded] = useState(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  const [notFound, setNotFound] = useState(false);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  useEffect(() => {
 | 
					  useEffect(() => {
 | 
				
			||||||
    if (
 | 
					    if (
 | 
				
			||||||
      chatId &&
 | 
					      chatId &&
 | 
				
			||||||
@@ -234,6 +243,7 @@ const ChatWindow = ({ id }: { id?: string }) => {
 | 
				
			|||||||
        setIsMessagesLoaded,
 | 
					        setIsMessagesLoaded,
 | 
				
			||||||
        setChatHistory,
 | 
					        setChatHistory,
 | 
				
			||||||
        setFocusMode,
 | 
					        setFocusMode,
 | 
				
			||||||
 | 
					        setNotFound,
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
    } else if (!chatId) {
 | 
					    } else if (!chatId) {
 | 
				
			||||||
      setNewChatCreated(true);
 | 
					      setNewChatCreated(true);
 | 
				
			||||||
@@ -416,6 +426,9 @@ const ChatWindow = ({ id }: { id?: string }) => {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return isReady ? (
 | 
					  return isReady ? (
 | 
				
			||||||
 | 
					    notFound ? (
 | 
				
			||||||
 | 
					      <Error statusCode={404} />
 | 
				
			||||||
 | 
					    ) : (
 | 
				
			||||||
      <div>
 | 
					      <div>
 | 
				
			||||||
        {messages.length > 0 ? (
 | 
					        {messages.length > 0 ? (
 | 
				
			||||||
          <>
 | 
					          <>
 | 
				
			||||||
@@ -436,6 +449,7 @@ const ChatWindow = ({ id }: { id?: string }) => {
 | 
				
			|||||||
          />
 | 
					          />
 | 
				
			||||||
        )}
 | 
					        )}
 | 
				
			||||||
      </div>
 | 
					      </div>
 | 
				
			||||||
 | 
					    )
 | 
				
			||||||
  ) : (
 | 
					  ) : (
 | 
				
			||||||
    <div className="flex flex-row items-center justify-center min-h-screen">
 | 
					    <div className="flex flex-row items-center justify-center min-h-screen">
 | 
				
			||||||
      <svg
 | 
					      <svg
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user