feat(core-flows): hook to set shipping opt context when listing (#13468)

* feat(core-flows): add hook to set shipping option context when listing them

* changeset

* add integration test

* add it to other workflow

* missing hook in workflow response

* rework workflow

* rework workflow

* typing issue

* comment from oli

* cursor the goat

* tests

* save lines

* move code around

* missing additional params in many places

* smal fix

* smal fix
This commit is contained in:
William Bouchard authored and GitHub committed 2025-09-17 19:20:02 +02:00
1 parent def722d8ee
commit 1071296236
19 files changed
+301 -90

No files matched your search

@@ -7,9 +7,11 @@ import {
} from "@medusajs/framework/http"
import { Modules } from "@medusajs/framework/utils"
import { refetchCart } from "../../helpers"
import { StoreUpdateCartCustomerType } from "../../validators"
import { AdditionalData } from "@medusajs/types"
export const POST = async (
req: AuthenticatedMedusaRequest,
req: AuthenticatedMedusaRequest<StoreUpdateCartCustomerType & AdditionalData>,
res: MedusaResponse<HttpTypes.StoreCartResponse>
) => {
const we = req.scope.resolve(Modules.WORKFLOW_ENGINE)
@@ -18,6 +20,7 @@ export const POST = async (
input: {
id: req.params.id,
customer_id: req.auth_context?.actor_id,
additional_data: req.validatedBody.additional_data,
},
transactionId: "cart-transfer-customer-" + req.params.id,
})
@@ -3,13 +3,13 @@ import {
updateLineItemInCartWorkflowId,
} from "@medusajs/core-flows"
import { MedusaRequest, MedusaResponse } from "@medusajs/framework/http"
import { HttpTypes } from "@medusajs/framework/types"
import { AdditionalData, HttpTypes } from "@medusajs/framework/types"
import { Modules } from "@medusajs/framework/utils"
import { refetchCart } from "../../../helpers"
import { StoreUpdateCartLineItemType } from "../../../validators"
export const POST = async (
req: MedusaRequest<StoreUpdateCartLineItemType>,
req: MedusaRequest<StoreUpdateCartLineItemType & AdditionalData>,
res: MedusaResponse<HttpTypes.StoreCartResponse>
) => {
const we = req.scope.resolve(Modules.WORKFLOW_ENGINE)
@@ -18,6 +18,7 @@ export const POST = async (
cart_id: req.params.id,
item_id: req.params.line_id,
update: req.validatedBody,
additional_data: req.validatedBody.additional_data,
},
transactionId: "cart-update-item-" + req.params.id,
})
@@ -39,7 +40,10 @@ export const DELETE = async (
const we = req.scope.resolve(Modules.WORKFLOW_ENGINE)
await we.run(deleteLineItemsWorkflowId, {
input: { cart_id: req.params.id, ids: [id] },
input: {
cart_id: req.params.id,
ids: [id],
},
transactionId: "cart-delete-item-" + req.params.id,
})
@@ -4,9 +4,10 @@ import { HttpTypes } from "@medusajs/framework/types"
import { Modules } from "@medusajs/utils"
import { refetchCart } from "../../helpers"
import { StoreAddCartLineItemType } from "../../validators"
import { AdditionalData } from "@medusajs/types"
export const POST = async (
req: MedusaRequest<StoreAddCartLineItemType>,
req: MedusaRequest<StoreAddCartLineItemType & AdditionalData>,
res: MedusaResponse<HttpTypes.StoreCartResponse>
) => {
const we = req.scope.resolve(Modules.WORKFLOW_ENGINE)
@@ -14,6 +15,7 @@ export const POST = async (
input: {
cart_id: req.params.id,
items: [req.validatedBody],
additional_data: req.validatedBody.additional_data,
},
transactionId: "cart-add-item-" + req.params.id,
})
@@ -34,6 +34,7 @@ export const POST = async (
input: {
...req.validatedBody,
id: req.params.id,
additional_data: req.validatedBody.additional_data,
},
transactionId: "cart-update-" + req.params.id,
})
@@ -1,11 +1,11 @@
import { addShippingMethodToCartWorkflow } from "@medusajs/core-flows"
import { MedusaRequest, MedusaResponse } from "@medusajs/framework/http"
import { HttpTypes } from "@medusajs/framework/types"
import { AdditionalData, HttpTypes } from "@medusajs/framework/types"
import { refetchCart } from "../../helpers"
import { StoreAddCartShippingMethodsType } from "../../validators"
export const POST = async (
req: MedusaRequest<StoreAddCartShippingMethodsType>,
req: MedusaRequest<StoreAddCartShippingMethodsType & AdditionalData>,
res: MedusaResponse<HttpTypes.StoreCartResponse>
) => {
const payload = req.validatedBody
@@ -14,6 +14,7 @@ export const POST = async (
input: {
options: [{ id: payload.option_id, data: payload.data }],
cart_id: req.params.id,
additional_data: payload.additional_data,
},
})