Files
medusa-store/packages/medusa-react/src/hooks/admin/notes/mutations.ts
Kasper Fabricius Kristensen 6293fccc65 hotfix(medusa-react): Invalidate query keys on successful mutations (#3099)
**What**
- Fixes an issue where query keys weren't invalidated on successful mutations.

**How**
- Update `buildOptions` function to be called per `QueryKey` instead of passing them all as a single query key, resulting in no matches found.
- Fixes imports that aren't compatible with ESM modules.
2023-01-24 12:55:24 +00:00

69 lines
1.6 KiB
TypeScript

import {
AdminNotesDeleteRes,
AdminNotesRes,
AdminPostNotesNoteReq,
AdminPostNotesReq,
} from "@medusajs/medusa"
import { Response } from "@medusajs/medusa-js"
import {
useMutation,
UseMutationOptions,
useQueryClient,
} from "@tanstack/react-query"
import { useMedusa } from "../../../contexts/medusa"
import { buildOptions } from "../../utils/buildOptions"
import { adminNoteKeys } from "./queries"
export const useAdminCreateNote = (
options?: UseMutationOptions<
Response<AdminNotesRes>,
Error,
AdminPostNotesReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostNotesReq) => client.admin.notes.create(payload),
buildOptions(queryClient, adminNoteKeys.lists(), options)
)
}
export const useAdminUpdateNote = (
id: string,
options?: UseMutationOptions<
Response<AdminNotesRes>,
Error,
AdminPostNotesNoteReq
>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
(payload: AdminPostNotesNoteReq) => client.admin.notes.update(id, payload),
buildOptions(
queryClient,
[adminNoteKeys.detail(id), adminNoteKeys.lists()],
options
)
)
}
export const useAdminDeleteNote = (
id: string,
options?: UseMutationOptions<Response<AdminNotesDeleteRes>, Error, void>
) => {
const { client } = useMedusa()
const queryClient = useQueryClient()
return useMutation(
() => client.admin.notes.delete(id),
buildOptions(
queryClient,
[adminNoteKeys.detail(id), adminNoteKeys.lists()],
options
)
)
}