feature: add create and update cart hooks (#8481)

This commit is contained in:
Harminder Virk
2024-08-07 16:00:37 +05:30
committed by GitHub
parent 78eb457487
commit 7695d30952
6 changed files with 58 additions and 18 deletions
@@ -1,8 +1,13 @@
import { CartDTO, CreateCartWorkflowInputDTO } from "@medusajs/types"
import {
AdditionalData,
CartDTO,
CreateCartWorkflowInputDTO,
} from "@medusajs/types"
import { MedusaError } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
parallelize,
transform,
@@ -29,9 +34,7 @@ import { refreshPaymentCollectionForCartWorkflow } from "./refresh-payment-colle
export const createCartWorkflowId = "create-cart"
export const createCartWorkflow = createWorkflow(
createCartWorkflowId,
(
input: WorkflowData<CreateCartWorkflowInputDTO>
): WorkflowResponse<CartDTO> => {
(input: WorkflowData<CreateCartWorkflowInputDTO & AdditionalData>) => {
const variantIds = transform({ input }, (data) => {
return (data.input.items ?? []).map((i) => i.variant_id)
})
@@ -158,6 +161,13 @@ export const createCartWorkflow = createWorkflow(
},
})
return new WorkflowResponse(cart)
const cartCreated = createHook("cartCreated", {
cart,
additional_data: input.additional_data,
})
return new WorkflowResponse(cart, {
hooks: [cartCreated],
})
}
)
@@ -1,7 +1,9 @@
import { UpdateCartWorkflowInputDTO } from "@medusajs/types"
import { AdditionalData, UpdateCartWorkflowInputDTO } from "@medusajs/types"
import { MedusaError, PromotionActions, isPresent } from "@medusajs/utils"
import {
WorkflowData,
WorkflowResponse,
createHook,
createWorkflow,
parallelize,
transform,
@@ -22,7 +24,7 @@ import { refreshPaymentCollectionForCartWorkflow } from "./refresh-payment-colle
export const updateCartWorkflowId = "update-cart"
export const updateCartWorkflow = createWorkflow(
updateCartWorkflowId,
(input: WorkflowData<UpdateCartWorkflowInputDTO>): WorkflowData<void> => {
(input: WorkflowData<UpdateCartWorkflowInputDTO & AdditionalData>) => {
const [salesChannel, region, customerData] = parallelize(
findSalesChannelStep({
salesChannelId: input.sales_channel_id,
@@ -96,5 +98,14 @@ export const updateCartWorkflow = createWorkflow(
cart_id: input.id,
},
})
const cartUpdated = createHook("cartUpdated", {
cart,
additional_data: input.additional_data,
})
return new WorkflowResponse(void 0, {
hooks: [cartUpdated],
})
}
)