feat(medusa): Implement premises of order edit retrieval (#2183)

**What**
- Implements the admin/store retrieval end point 
- Service implementation of the retrieve method
- Service implementation of the computeLineItems method which aggregates the right line item based on the changes that are made
- client
  - medusa-js api
  - medusa-react queries hooks

**Tests**
- Unit tests of the retrieval end points
- Unit tests of the service retrieve method and computeLineItems
- Integration tests for admin/store
- client
  - medusa-js tests
  - medusa-react hooks tests

FIXES CORE-492
This commit is contained in:
Adrien de Peretti
2022-09-15 11:12:20 +02:00
committed by GitHub
parent 3efeb6b84f
commit f863d28b9a
36 changed files with 1317 additions and 2 deletions

View File

@@ -12,6 +12,7 @@ export * from "./invites"
export * from "./notes"
export * from "./notifications"
export * from "./orders"
export * from "./order-edits"
export * from "./price-lists"
export * from "./product-tags"
export * from "./product-types"

View File

@@ -0,0 +1 @@
export * from "./queries"

View File

@@ -0,0 +1,28 @@
import { AdminOrdersEditsRes } from "@medusajs/medusa"
import { queryKeysFactory } from "../../utils"
import { UseQueryOptionsWrapper } from "../../../types"
import { Response } from "@medusajs/medusa-js"
import { useMedusa } from "../../../contexts"
import { useQuery } from "react-query"
const ADMIN_ORDER_EDITS_QUERY_KEY = `admin_order_edits` as const
export const adminOrderEditsKeys = queryKeysFactory(ADMIN_ORDER_EDITS_QUERY_KEY)
type OrderEditQueryKeys = typeof adminOrderEditsKeys
export const useAdminOrderEdit = (
id: string,
options?: UseQueryOptionsWrapper<
Response<AdminOrdersEditsRes>,
Error,
ReturnType<OrderEditQueryKeys["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
adminOrderEditsKeys.detail(id),
() => client.admin.orderEdits.retrieve(id),
options
)
return { ...data, ...rest } as const
}

View File

@@ -6,6 +6,7 @@ export * from "./return-reasons/"
export * from "./swaps/"
export * from "./carts/"
export * from "./orders/"
export * from "./order-edits"
export * from "./customers/"
export * from "./returns/"
export * from "./gift-cards/"

View File

@@ -0,0 +1 @@
export * from "./queries"

View File

@@ -0,0 +1,32 @@
import { queryKeysFactory } from "../../utils"
import { StoreOrderEditsRes } from "@medusajs/medusa"
import { useQuery } from "react-query"
import { useMedusa } from "../../../contexts"
import { UseQueryOptionsWrapper } from "../../../types"
import { Response } from "@medusajs/medusa-js"
const ORDER_EDITS_QUERY_KEY = `orderEdit` as const
export const orderEditQueryKeys = queryKeysFactory<
typeof ORDER_EDITS_QUERY_KEY
>(ORDER_EDITS_QUERY_KEY)
type OrderQueryKey = typeof orderEditQueryKeys
export const useOrderEdit = (
id: string,
options?: UseQueryOptionsWrapper<
Response<StoreOrderEditsRes>,
Error,
ReturnType<OrderQueryKey["detail"]>
>
) => {
const { client } = useMedusa()
const { data, ...rest } = useQuery(
orderEditQueryKeys.detail(id),
() => client.orderEdits.retrieve(id),
options
)
return { ...data, ...rest } as const
}