fix query

This commit is contained in:
Guillaume Dorce 2022-09-30 19:04:51 +02:00
parent 131270db53
commit 51fc7dff85
2 changed files with 13 additions and 30 deletions

View File

@ -1,12 +1,18 @@
import Message from "./Message"; 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 MessageWrapper = () => {
const {messages, isLoading} = useMessages(); const { data: messages, isLoading, isError } = useQuery(["messages"], getMessages, {
onError: (error) => {
toastError(error as string);
},
});
return ( return (
<main className="messages-wrapper flex flex-col gap-4 pb-6 pt-4 -mb-4 overflow-scroll w-full max-w-3xl rounded-md"> <main className="messages-wrapper flex flex-col gap-4 pb-6 pt-4 -mb-4 overflow-scroll w-full max-w-3xl rounded-md">
{isLoading ? '' : messages?.map((message: any) => ( {isLoading ? '' : isError ? '' : messages?.map((message: any) => (
<Message message={message} key={message.id}/> <Message message={message} key={message.id}/>
))} ))}
</main> </main>

View File

@ -1,4 +1,3 @@
import { useState } from 'react';
import { Cookies } from 'react-cookie'; import { Cookies } from 'react-cookie';
const getMessages = async () => { const getMessages = async () => {
@ -10,32 +9,10 @@ const getMessages = async () => {
}, },
}); });
const data = await response.json(); const data = await response.json();
return data; if (data.error) {
}; throw data.error;
const useMessages = () => {
const [messages, setMessages] = useState([]);
const [isLoading, setIsLoading] = useState(true);
const [isError, setIsError] = useState(false);
const [error, setError] = useState<unknown>(null);
const fetchMessages = () => {
getMessages()
.then((messagesData) => {
setMessages(messagesData);
setIsLoading(false);
})
.catch((errorMsg) => {
setIsError(true);
setError(errorMsg);
});
};
if (isLoading) {
fetchMessages();
} }
return data;
return { messages, isLoading, isError, error };
}; };
const newMessage = async (data: FormData) => { const newMessage = async (data: FormData) => {
@ -75,4 +52,4 @@ const editMessage = async (id: string, data: FormData) => {
return response.json(); return response.json();
}; };
export { getMessages, newMessage, deleteMessage, editMessage, useMessages }; export { getMessages, newMessage, deleteMessage, editMessage };