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:
co-authored by
Sebastian Rindom
Sebastian Rindom
parent
24175025d1
commit
2e384842d5
@@ -0,0 +1,2 @@
|
||||
export * from "./queries"
|
||||
export * from "./mutations"
|
||||
@@ -0,0 +1,171 @@
|
||||
import { adminSwapKeys } from "./queries"
|
||||
import {
|
||||
AdminOrdersRes,
|
||||
AdminPostOrdersOrderSwapsReq,
|
||||
AdminPostOrdersOrderSwapsSwapFulfillmentsReq,
|
||||
AdminPostOrdersOrderSwapsSwapReceiveReq,
|
||||
AdminPostOrdersOrderSwapsSwapShipmentsReq,
|
||||
} from "@medusajs/medusa"
|
||||
import { Response } from "@medusajs/medusa-js"
|
||||
import { useMutation, UseMutationOptions, useQueryClient } from "react-query"
|
||||
import { adminOrderKeys } from ".."
|
||||
import { useMedusa } from "../../../contexts/medusa"
|
||||
import { buildOptions } from "../../utils/buildOptions"
|
||||
|
||||
export const useAdminCreateSwap = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderSwapsReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
return useMutation(
|
||||
(payload: AdminPostOrdersOrderSwapsReq) =>
|
||||
client.admin.orders.createSwap(orderId, payload),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.detail(orderId), adminSwapKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCancelSwap = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, string>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(swapId: string) => client.admin.orders.cancelSwap(orderId, swapId),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.detail(orderId), adminSwapKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminReceiveSwap = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderSwapsSwapReceiveReq & { swap_id: string }
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
({
|
||||
swap_id,
|
||||
...payload
|
||||
}: AdminPostOrdersOrderSwapsSwapReceiveReq & { swap_id: string }) =>
|
||||
client.admin.orders.receiveSwap(orderId, swap_id, payload),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.detail(orderId), adminSwapKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminFulfillSwap = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderSwapsSwapFulfillmentsReq & { swap_id: string }
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
({
|
||||
swap_id,
|
||||
...payload
|
||||
}: AdminPostOrdersOrderSwapsSwapFulfillmentsReq & { swap_id: string }) =>
|
||||
client.admin.orders.fulfillSwap(orderId, swap_id, payload),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.detail(orderId), adminSwapKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCreateSwapShipment = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
AdminPostOrdersOrderSwapsSwapShipmentsReq & { swap_id: string }
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
({
|
||||
swap_id,
|
||||
...payload
|
||||
}: AdminPostOrdersOrderSwapsSwapShipmentsReq & { swap_id: string }) =>
|
||||
client.admin.orders.createSwapShipment(orderId, swap_id, payload),
|
||||
buildOptions(queryClient, adminOrderKeys.detail(orderId), options)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminProcessSwapPayment = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<Response<AdminOrdersRes>, Error, string>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(swapId: string) => client.admin.orders.processSwapPayment(orderId, swapId),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.detail(orderId), adminSwapKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCancelSwapFulfillment = (
|
||||
orderId: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminOrdersRes>,
|
||||
Error,
|
||||
{ swap_id: string; fulfillment_id: string }
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
({
|
||||
swap_id,
|
||||
fulfillment_id,
|
||||
}: {
|
||||
swap_id: string
|
||||
fulfillment_id: string
|
||||
}) =>
|
||||
client.admin.orders.cancelSwapFulfillment(
|
||||
orderId,
|
||||
swap_id,
|
||||
fulfillment_id
|
||||
),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminOrderKeys.detail(orderId), adminSwapKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
import {
|
||||
AdminSwapsListRes,
|
||||
AdminSwapsRes,
|
||||
AdminGetSwapsParams,
|
||||
} 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_SWAPS_QUERY_KEY = `admin_swaps` as const
|
||||
|
||||
export const adminSwapKeys = queryKeysFactory(ADMIN_SWAPS_QUERY_KEY)
|
||||
|
||||
type SwapsQueryKey = typeof adminSwapKeys
|
||||
|
||||
export const useAdminSwaps = (
|
||||
query?: AdminGetSwapsParams,
|
||||
options?: UseQueryOptionsWrapper<
|
||||
Response<AdminSwapsListRes>,
|
||||
Error,
|
||||
ReturnType<SwapsQueryKey["list"]>
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const { data, ...rest } = useQuery(
|
||||
adminSwapKeys.list(query),
|
||||
() => client.admin.swaps.list(query),
|
||||
options
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
|
||||
export const useAdminSwap = (
|
||||
id: string,
|
||||
options?: UseQueryOptionsWrapper<
|
||||
Response<AdminSwapsRes>,
|
||||
Error,
|
||||
ReturnType<SwapsQueryKey["detail"]>
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const { data, ...rest } = useQuery(
|
||||
adminSwapKeys.detail(id),
|
||||
() => client.admin.swaps.retrieve(id),
|
||||
options
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
Reference in New Issue
Block a user