Feat: Medusa react price list (#1258)
* export everything from price lists in core * medusa-js price list * feat: add product list for price lists * feat: add product list for price lists * add price list to admin module * add price list hooks initial * refactor: product list controller * fix: add integration test for price list products * update types * add tests for price lists * update medusa react tests * update update request for price lists * Apply suggestions from code review Co-authored-by: Sebastian Rindom <skrindom@gmail.com> * rename methods * pr feedback * list products from price list * fix errors after merge * update medusa react with medusa-js method name changes * redo changes * update hook names * fix: routes in msw handler Co-authored-by: Sebastian Rindom <skrindom@gmail.com> Co-authored-by: Zakaria El Asri <zakaria.elas@gmail.com>
This commit is contained in:
@@ -10,6 +10,7 @@ export * from "./orders"
|
||||
export * from "./products"
|
||||
export * from "./product-tags"
|
||||
export * from "./product-types"
|
||||
export * from "./price-lists"
|
||||
export * from "./return-reasons"
|
||||
export * from "./regions"
|
||||
export * from "./shipping-options"
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
export * from "./queries"
|
||||
export * from "./mutations"
|
||||
108
packages/medusa-react/src/hooks/admin/price-lists/mutations.ts
Normal file
108
packages/medusa-react/src/hooks/admin/price-lists/mutations.ts
Normal file
@@ -0,0 +1,108 @@
|
||||
import {
|
||||
AdminPriceListRes,
|
||||
AdminPostPriceListsPriceListPriceListReq,
|
||||
AdminPostPriceListsPriceListReq,
|
||||
AdminPostPriceListPricesPricesReq,
|
||||
AdminDeletePriceListPricesPricesReq,
|
||||
AdminPriceListDeleteRes,
|
||||
AdminPriceListDeleteBatchRes,
|
||||
} 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"
|
||||
import { adminPriceListKeys } from "./queries"
|
||||
|
||||
export const useAdminCreatePriceList = (
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminPriceListRes>,
|
||||
Error,
|
||||
AdminPostPriceListsPriceListReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
return useMutation(
|
||||
(payload: AdminPostPriceListsPriceListReq) =>
|
||||
client.admin.priceLists.create(payload),
|
||||
buildOptions(queryClient, adminPriceListKeys.lists(), options)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminUpdatePriceList = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminPriceListRes>,
|
||||
Error,
|
||||
AdminPostPriceListsPriceListPriceListReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminPostPriceListsPriceListPriceListReq) =>
|
||||
client.admin.priceLists.update(id, payload),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminPriceListKeys.detail(id), adminPriceListKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminDeletePriceList = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<Response<AdminPriceListDeleteRes>, Error, void>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
() => client.admin.priceLists.delete(id),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminPriceListKeys.detail(id), adminPriceListKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminCreatePriceListPrices = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminPriceListRes>,
|
||||
Error,
|
||||
AdminPostPriceListPricesPricesReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
return useMutation(
|
||||
(payload: AdminPostPriceListPricesPricesReq) =>
|
||||
client.admin.priceLists.addPrices(id, payload),
|
||||
buildOptions(queryClient, adminPriceListKeys.lists(), options)
|
||||
)
|
||||
}
|
||||
|
||||
export const useAdminDeletePriceListPrices = (
|
||||
id: string,
|
||||
options?: UseMutationOptions<
|
||||
Response<AdminPriceListDeleteBatchRes>,
|
||||
Error,
|
||||
AdminDeletePriceListPricesPricesReq
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const queryClient = useQueryClient()
|
||||
|
||||
return useMutation(
|
||||
(payload: AdminDeletePriceListPricesPricesReq) =>
|
||||
client.admin.priceLists.deletePrices(id, payload),
|
||||
buildOptions(
|
||||
queryClient,
|
||||
[adminPriceListKeys.detail(id), adminPriceListKeys.lists()],
|
||||
options
|
||||
)
|
||||
)
|
||||
}
|
||||
70
packages/medusa-react/src/hooks/admin/price-lists/queries.ts
Normal file
70
packages/medusa-react/src/hooks/admin/price-lists/queries.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
import {
|
||||
AdminGetPriceListsPriceListProductsParams,
|
||||
AdminGetPriceListPaginationParams,
|
||||
AdminPriceListsListRes,
|
||||
AdminPriceListRes,
|
||||
AdminProductsListRes,
|
||||
} 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_PRICE_LISTS_QUERY_KEY = `admin_price_lists` as const
|
||||
|
||||
export const adminPriceListKeys = queryKeysFactory(ADMIN_PRICE_LISTS_QUERY_KEY)
|
||||
|
||||
type PriceListQueryKeys = typeof adminPriceListKeys
|
||||
|
||||
export const useAdminPriceLists = (
|
||||
query?: AdminGetPriceListPaginationParams,
|
||||
options?: UseQueryOptionsWrapper<
|
||||
Response<AdminPriceListsListRes>,
|
||||
Error,
|
||||
ReturnType<PriceListQueryKeys["list"]>
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const { data, ...rest } = useQuery(
|
||||
adminPriceListKeys.list(query),
|
||||
() => client.admin.priceLists.list(query),
|
||||
options
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
|
||||
export const useAdminPriceListProducts = (
|
||||
id: string,
|
||||
query?: AdminGetPriceListsPriceListProductsParams,
|
||||
options?: UseQueryOptionsWrapper<
|
||||
Response<AdminProductsListRes>,
|
||||
Error,
|
||||
ReturnType<PriceListQueryKeys["detail"]>
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const { data, ...rest } = useQuery(
|
||||
adminPriceListKeys.detail(id),
|
||||
() => client.admin.priceLists.listProducts(id, query),
|
||||
options
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
|
||||
export const useAdminPriceList = (
|
||||
id: string,
|
||||
options?: UseQueryOptionsWrapper<
|
||||
Response<AdminPriceListRes>,
|
||||
Error,
|
||||
ReturnType<PriceListQueryKeys["detail"]>
|
||||
>
|
||||
) => {
|
||||
const { client } = useMedusa()
|
||||
const { data, ...rest } = useQuery(
|
||||
adminPriceListKeys.detail(id),
|
||||
() => client.admin.priceLists.retrieve(id),
|
||||
options
|
||||
)
|
||||
return { ...data, ...rest } as const
|
||||
}
|
||||
Reference in New Issue
Block a user