From 5ba57cefacfe221400e0c4774629d82420de5e75 Mon Sep 17 00:00:00 2001 From: slawk0 Date: Thu, 14 Nov 2024 22:17:14 +0100 Subject: [PATCH] displays no more messages found message from server --- client/src/components/chat/MessagesArea.tsx | 8 +++- client/src/pages/Chat.tsx | 52 +++++++++++++-------- server/server.js | 2 +- 3 files changed, 40 insertions(+), 22 deletions(-) diff --git a/client/src/components/chat/MessagesArea.tsx b/client/src/components/chat/MessagesArea.tsx index f505569..76c0802 100644 --- a/client/src/components/chat/MessagesArea.tsx +++ b/client/src/components/chat/MessagesArea.tsx @@ -31,6 +31,7 @@ type MessagesAreaProps = { messageHandler: (msg: ChatMessages) => void; setContactsList: React.Dispatch>; fetchPreviousMessages: (contact: string | null) => Promise; + errorMessage: string | null; }; function MessagesArea({ @@ -40,6 +41,7 @@ function MessagesArea({ setContactsList, messageHandler, fetchPreviousMessages, + errorMessage, }: MessagesAreaProps) { const messagesEndRef = useRef(null); const containerRef = useRef(null); @@ -56,7 +58,10 @@ function MessagesArea({ setIsFetchingHistory(true); fetchPreviousMessages(currentContact) .then(() => setIsLoading(false)) - .catch((e) => console.error('Failed to fetch messages: ', e)); + .catch((e) => { + console.error('Failed to fetch messages: ', e); + setIsLoading(false); + }); } }; @@ -128,6 +133,7 @@ function MessagesArea({ return (
+

{errorMessage}

    {isLoading ? : null} {messageList} diff --git a/client/src/pages/Chat.tsx b/client/src/pages/Chat.tsx index 5d8cf0a..fbc77fa 100644 --- a/client/src/pages/Chat.tsx +++ b/client/src/pages/Chat.tsx @@ -31,6 +31,7 @@ function Chat() { const [currentContact, setCurrentContact] = useState(null); const [cursor, setCursor] = useState(0); const [messages, setMessages] = useState([]); + const [errorMessage, setErrorMessage] = useState(null); useEffect(() => { const token = Cookies.get('token'); @@ -62,32 +63,42 @@ function Chat() { } const fetchMessages = async (currentContact: string | null) => { - const messages = await getMessages(currentContact); console.log('Fetching messages for: ', currentContact); - setCursor(() => { - return Math.min( - ...messages.messages.map((message) => message.message_id), - ); - }); - messages.messages.forEach(messageHandler); + try { + const messages = await getMessages(currentContact); + + setCursor(() => { + return Math.min( + ...messages.messages.map((message) => message.message_id), + ); + }); + + messages.messages.forEach(messageHandler); + } catch (e) { + setErrorMessage(e.response.data.message); + } }; const fetchPreviousMessages = async (contact: string | null) => { console.log('Fetching messages for: ', contact, 'with cursor: ', cursor); - const messages = await getMessages(contact, cursor, 50); - messages.messages.forEach((msg) => { - setMessages((prevMessages) => { - if (!prevMessages.some((m) => m.message_id === msg.message_id)) { - return [msg, ...prevMessages]; - } - return prevMessages; + try { + const messages = await getMessages(contact, cursor, 50); + messages.messages.forEach((msg) => { + setMessages((prevMessages) => { + if (!prevMessages.some((m) => m.message_id === msg.message_id)) { + return [msg, ...prevMessages]; + } + return prevMessages; + }); }); - }); - setCursor(() => { - return Math.min( - ...messages.messages.map((message) => message.message_id), - ); - }); + setCursor(() => { + return Math.min( + ...messages.messages.map((message) => message.message_id), + ); + }); + } catch (e) { + setErrorMessage(e.response.data.message); + } }; function messageHandler(msg: ChatMessages) { @@ -152,6 +163,7 @@ function Chat() { messageHandler={messageHandler} setContactsList={setContactsList} fetchPreviousMessages={fetchPreviousMessages} + errorMessage={errorMessage} />
diff --git a/server/server.js b/server/server.js index a348024..ab47802 100644 --- a/server/server.js +++ b/server/server.js @@ -196,7 +196,7 @@ app.get("/api/chat/messages/:contact", authorizeUser, async (req, res) => { cursor, ); if (messages && messages.length < limit) { - return res.status(404).json({ message: "No more messages" }); + return res.status(404).json({ message: "No more messages found" }); } console.log("MESSAGESLENGTH: ", messages.length, limit);