const postMessage = trpc.useMutation("guestBook.postMessage", {
onMutate: async (newMessage) => {
ctx.cancelQuery(["guestBook.getPaginated"]);
const previousDataGetPaginated = ctx.getInfiniteQueryData(["guestBook.getPaginated", { limit: 5 }]);
if (previousDataGetPaginated) {
ctx.setInfiniteQueryData(["guestBook.getPaginated", { limit: 5 }], (oldData) => {
if (!oldData) {
return {
pages: [],
pageParams: [],
}
}
if (oldData.pages[0]) {
oldData.pages[0].items.unshift({ ...newMessage, id: "0" })
}
return oldData;
})
}
return { previousDataGetPaginated };
},
onError: (err, newMessage, context) => {
ctx.setInfiniteQueryData(["guestBook.getPaginated", { limit: 5}], context?.previousDataGetPaginated);
},
onSettled: () => {
ctx.invalidateQueries(['guestBook.getPaginated']);
},
});
const postMessage = trpc.useMutation("guestBook.postMessage", {
onMutate: async (newMessage) => {
ctx.cancelQuery(["guestBook.getPaginated"]);
const previousDataGetPaginated = ctx.getInfiniteQueryData(["guestBook.getPaginated", { limit: 5 }]);
if (previousDataGetPaginated) {
ctx.setInfiniteQueryData(["guestBook.getPaginated", { limit: 5 }], (oldData) => {
if (!oldData) {
return {
pages: [],
pageParams: [],
}
}
if (oldData.pages[0]) {
oldData.pages[0].items.unshift({ ...newMessage, id: "0" })
}
return oldData;
})
}
return { previousDataGetPaginated };
},
onError: (err, newMessage, context) => {
ctx.setInfiniteQueryData(["guestBook.getPaginated", { limit: 5}], context?.previousDataGetPaginated);
},
onSettled: () => {
ctx.invalidateQueries(['guestBook.getPaginated']);
},
});