diff --git a/client/src/components/MessageWrapper.tsx b/client/src/components/MessageWrapper.tsx index 2a65d09..455e8ee 100644 --- a/client/src/components/MessageWrapper.tsx +++ b/client/src/components/MessageWrapper.tsx @@ -1,12 +1,18 @@ import Message from "./Message"; -import { useMessages } from "@controllers/MessageController"; +import { getMessages } from "@controllers/MessageController"; +import { useQuery } from "@tanstack/react-query"; +import { toastError } from "@controllers/Toasts"; const MessageWrapper = () => { - const {messages, isLoading} = useMessages(); + const { data: messages, isLoading, isError } = useQuery(["messages"], getMessages, { + onError: (error) => { + toastError(error as string); + }, + }); return (
- {isLoading ? '' : messages?.map((message: any) => ( + {isLoading ? '' : isError ? '' : messages?.map((message: any) => ( ))}
diff --git a/client/src/controllers/MessageController.ts b/client/src/controllers/MessageController.ts index 3133781..ba813a2 100644 --- a/client/src/controllers/MessageController.ts +++ b/client/src/controllers/MessageController.ts @@ -1,4 +1,3 @@ -import { useState } from 'react'; import { Cookies } from 'react-cookie'; const getMessages = async () => { @@ -10,32 +9,10 @@ const getMessages = async () => { }, }); const data = await response.json(); - return data; -}; - -const useMessages = () => { - const [messages, setMessages] = useState([]); - const [isLoading, setIsLoading] = useState(true); - const [isError, setIsError] = useState(false); - const [error, setError] = useState(null); - - const fetchMessages = () => { - getMessages() - .then((messagesData) => { - setMessages(messagesData); - setIsLoading(false); - }) - .catch((errorMsg) => { - setIsError(true); - setError(errorMsg); - }); - }; - - if (isLoading) { - fetchMessages(); + if (data.error) { + throw data.error; } - - return { messages, isLoading, isError, error }; + return data; }; const newMessage = async (data: FormData) => { @@ -75,4 +52,4 @@ const editMessage = async (id: string, data: FormData) => { return response.json(); }; -export { getMessages, newMessage, deleteMessage, editMessage, useMessages }; +export { getMessages, newMessage, deleteMessage, editMessage };