const addProject = async (...) => {
const { data, error } = await supabase.rpc('create_project', {xxxx})
if (error) {
throw new Error(error.message)
}
return data
}
export function useAddProject() {
const queryClient = useQueryClient()
return useMutation(
({... }) => addProject({ ...}),
{
onMutate: async (...) => {
await queryClient.cancelQueries(['list'])
const previous = queryClient.getQueryData<Array<ProjectMetaData>>(['list'])
if (previous) {
queryClient.setQueryData<Array<ProjectMetaData>>(
['list'],
[
{
id: 'temp',
},
...previous,
]
)
}
return { previous }
},
onError: (err, variables, context) => {
if (context?.previous) {
queryClient.setQueryData(['list'], context.previous)
}
},
onSettled: (data) => {
queryClient.invalidateQueries(['list'])
queryClient.invalidateQueries()
console.log('data from server', data)
},
}
)
}
const addProject = async (...) => {
const { data, error } = await supabase.rpc('create_project', {xxxx})
if (error) {
throw new Error(error.message)
}
return data
}
export function useAddProject() {
const queryClient = useQueryClient()
return useMutation(
({... }) => addProject({ ...}),
{
onMutate: async (...) => {
await queryClient.cancelQueries(['list'])
const previous = queryClient.getQueryData<Array<ProjectMetaData>>(['list'])
if (previous) {
queryClient.setQueryData<Array<ProjectMetaData>>(
['list'],
[
{
id: 'temp',
},
...previous,
]
)
}
return { previous }
},
onError: (err, variables, context) => {
if (context?.previous) {
queryClient.setQueryData(['list'], context.previous)
}
},
onSettled: (data) => {
queryClient.invalidateQueries(['list'])
queryClient.invalidateQueries()
console.log('data from server', data)
},
}
)
}