invalidate react-query queries upon mutations
This commit is contained in:
@@ -31,6 +31,7 @@ import {
|
|||||||
QueryClientProvider,
|
QueryClientProvider,
|
||||||
useMutation,
|
useMutation,
|
||||||
useQuery,
|
useQuery,
|
||||||
|
useQueryClient,
|
||||||
} from "@tanstack/react-query";
|
} from "@tanstack/react-query";
|
||||||
import {
|
import {
|
||||||
createTRPCClient,
|
createTRPCClient,
|
||||||
@@ -137,13 +138,27 @@ function NavLinkChat() {
|
|||||||
const pageContext = usePageContext();
|
const pageContext = usePageContext();
|
||||||
const { urlPathname } = pageContext;
|
const { urlPathname } = pageContext;
|
||||||
const trpc = useTRPC();
|
const trpc = useTRPC();
|
||||||
|
const queryClient = useQueryClient();
|
||||||
// const
|
// const
|
||||||
const startConversation = useMutation(
|
const startConversation = useMutation(
|
||||||
trpc.chat.conversations.start.mutationOptions()
|
trpc.chat.conversations.start.mutationOptions({
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: trpc.chat.conversations.fetchAll.queryKey(),
|
||||||
|
});
|
||||||
|
},
|
||||||
|
})
|
||||||
);
|
);
|
||||||
const deleteConversation = useMutation(
|
const deleteConversation = useMutation(
|
||||||
trpc.chat.conversations.deleteOne.mutationOptions()
|
trpc.chat.conversations.deleteOne.mutationOptions({
|
||||||
|
onSuccess: () => {
|
||||||
|
queryClient.invalidateQueries({
|
||||||
|
queryKey: trpc.chat.conversations.fetchAll.queryKey(),
|
||||||
|
});
|
||||||
|
},
|
||||||
|
})
|
||||||
);
|
);
|
||||||
|
|
||||||
const { data: conversations } = useQuery(
|
const { data: conversations } = useQuery(
|
||||||
trpc.chat.conversations.fetchAll.queryOptions()
|
trpc.chat.conversations.fetchAll.queryOptions()
|
||||||
);
|
);
|
||||||
@@ -153,12 +168,22 @@ function NavLinkChat() {
|
|||||||
const conversationId = useStore((state) => state.selectedConversationId);
|
const conversationId = useStore((state) => state.selectedConversationId);
|
||||||
|
|
||||||
async function handleDeleteConversation(conversationId: string) {
|
async function handleDeleteConversation(conversationId: string) {
|
||||||
|
await deleteConversation.mutateAsync(
|
||||||
|
{ id: conversationId }
|
||||||
|
// {
|
||||||
|
// onSuccess: () => {
|
||||||
|
// queryClient.invalidateQueries({
|
||||||
|
// queryKey: trpc.chat.conversations.fetchAll.queryKey(),
|
||||||
|
// });
|
||||||
|
// },
|
||||||
|
// }
|
||||||
|
);
|
||||||
removeConversation(conversationId);
|
removeConversation(conversationId);
|
||||||
await deleteConversation.mutateAsync({ id: conversationId });
|
|
||||||
const res = await startConversation.mutateAsync();
|
const newConversation = await startConversation.mutateAsync();
|
||||||
if (!res?.id) return;
|
if (!newConversation?.id) return;
|
||||||
addConversation(res);
|
addConversation(newConversation);
|
||||||
await navigate(`/chat/${res.id}`);
|
await navigate(`/chat/${newConversation.id}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
Reference in New Issue
Block a user