feat: medusa-react admin hooks (#978)
* add: medusa admin hooks + tests * fix: remove unneeded props * fix: deps * fix: deps * fix: deps * fix: failing tests * fix: failing tests * fix: query key * add: yarn workspaces * fix: linting medusa-react * fix: add prepare script * fix: buildOptions * fix: useAdminShippingOptions query * fix: use qs instead for query params (#1019) * fix: formatting * debug: ci pipeline * debug: log node_modules structure * debug: use lerna bootstrap * debug: update node version * debug: print pkgs in workspace * debug: print pkgs in workspace * debug: print pkgs in workspace * debug: print pkgs in workspace * debug: add explicit build step * fix: jsdoc * debug: run build step * debug: fix build errors * debug: add build step to integration tests * fix: failing test * cleanup Co-authored-by: Sebastian Rindom <seb@medusajs.com> Co-authored-by: Sebastian Rindom <skrindom@gmail.com>
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
export * from "./queries"
|
||||
export * from "./mutations"
|
||||
@@ -0,0 +1,249 @@
|
||||
import { adminOrderKeys } from "./queries"
|
||||
import {
|
||||
AdminOrdersRes,
|
||||
AdminPostOrdersOrderFulfillmentsReq,
|
||||
AdminPostOrdersOrderRefundsReq,
|
||||
AdminPostOrdersOrderReq,
|
||||
AdminPostOrdersOrderReturnsReq,
|
||||
AdminPostOrdersOrderShipmentReq,
|
||||
AdminPostOrdersOrderShippingMethodsReq,
|
||||
AdminPostOrdersReq,
|
||||
} from "@medusajs/medusa"
|
||||
import { Response } from "@medusajs/medusa-js"
|
||||
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
|
||||
import { useMedusa } from "../../../contexts/medusa"
|
||||
import { buildOptions } from "../../utils/buildOptions"
|
||||
|
||||
export const useAdminCreateOrder = (
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
return useMutation(
|
||||
(payload: AdminPostOrdersReq) => client.admin.orders.create(payload),
|
||||
buildOptions(queryClient, adminOrderKeys.lists(), options)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminUpdateOrder = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminPostOrdersOrderReq) =>
|
||||
client.admin.orders.update(id, payload),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCancelOrder = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, void>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
() => client.admin.orders.cancel(id),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCompleteOrder = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, void>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
() => client.admin.orders.complete(id),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCapturePayment = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, void>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
() => client.admin.orders.capturePayment(id),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminRefundPayment = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderRefundsReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminPostOrdersOrderRefundsReq) =>
|
||||
client.admin.orders.refundPayment(id, payload),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCreateFulfillment = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderFulfillmentsReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminPostOrdersOrderFulfillmentsReq) =>
|
||||
client.admin.orders.createFulfillment(orderId, payload),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.lists(), adminOrderKeys.detail(orderId)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCancelFulfillment = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, string>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(fulfillmentId: string) =>
|
||||
client.admin.orders.cancelFulfillment(orderId, fulfillmentId),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.lists(), adminOrderKeys.detail(orderId)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCreateShipment = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderShipmentReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminPostOrdersOrderShipmentReq) =>
|
||||
client.admin.orders.createShipment(orderId, payload),
|
||||
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminRequestReturn = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderReturnsReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminPostOrdersOrderReturnsReq) =>
|
||||
client.admin.orders.requestReturn(orderId, payload),
|
||||
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminAddShippingMethod = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderShippingMethodsReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminPostOrdersOrderShippingMethodsReq) =>
|
||||
client.admin.orders.addShippingMethod(orderId, payload),
|
||||
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminArchiveOrder = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, void>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
() => client.admin.orders.archive(id),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.lists(), adminOrderKeys.detail(id)],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminDeleteOrderMetadata = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, string>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(key: string) => client.admin.orders.deleteMetadata(id, key),
|
||||
buildOptions(queryClient, adminOrderKeys.detail(id), options)
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
import {
|
||||
AdminOrdersListRes,
|
||||
AdminOrdersRes,
|
||||
AdminGetOrdersParams,
|
||||
} from "@medusajs/medusa"
|
||||
import { Response } from "@medusajs/medusa-js"
|
||||
import { useQuery } from "react-query"
|
||||
import { useMedusa } from "../../../contexts"
|
||||
import { UseQueryOptionsWrapper } from "../../../types"
|
||||
import { queryKeysFactory } from "../../utils/index"
|
||||
|
||||
const ADMIN_ORDERS_QUERY_KEY = `admin_orders` as const
|
||||
|
||||
export const adminOrderKeys = queryKeysFactory(ADMIN_ORDERS_QUERY_KEY)
|
||||
|
||||
type OrderQueryKeys = typeof adminOrderKeys
|
||||
|
||||
export const useAdminOrders = (
|
||||
query?: AdminGetOrdersParams,
|
||||
options?: UseQueryOptionsWrapper<
|
||||
Response<AdminOrdersListRes>,
|
||||
Error,
|
||||
ReturnType<OrderQueryKeys["list"]>
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const { data, ...rest } = useQuery(
|
||||
adminOrderKeys.list(query),
|
||||
() => client.admin.orders.list(query),
|
||||
options
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
|
||||
export const useAdminOrder = (
|
||||
id: string,
|
||||
options?: UseQueryOptionsWrapper<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
ReturnType<OrderQueryKeys["detail"]>
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const { data, ...rest } = useQuery(
|
||||
adminOrderKeys.detail(id),
|
||||
() => client.admin.orders.retrieve(id),
|
||||
options
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
Reference in New Issue
Block a user