diff --git a/packages/core/core-flows/src/product/workflows/batch-link-products-collection.ts b/packages/core/core-flows/src/product/workflows/batch-link-products-collection.ts index 570ae00a8659e..586e23bc09477 100644 --- a/packages/core/core-flows/src/product/workflows/batch-link-products-collection.ts +++ b/packages/core/core-flows/src/product/workflows/batch-link-products-collection.ts @@ -4,6 +4,7 @@ import { batchLinkProductsToCollectionStep } from "../steps/batch-link-products- export const batchLinkProductsToCollectionWorkflowId = "batch-link-products-to-collection" + export const batchLinkProductsToCollectionWorkflow = createWorkflow( batchLinkProductsToCollectionWorkflowId, (input: WorkflowData): WorkflowData => { diff --git a/packages/core/core-flows/src/product/workflows/create-collections.ts b/packages/core/core-flows/src/product/workflows/create-collections.ts index b11d6d04753bd..d05520eaf09b7 100644 --- a/packages/core/core-flows/src/product/workflows/create-collections.ts +++ b/packages/core/core-flows/src/product/workflows/create-collections.ts @@ -2,18 +2,28 @@ import { ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, } from "@medusajs/workflows-sdk" import { createCollectionsStep } from "../steps" -type WorkflowInput = { collections: ProductTypes.CreateProductCollectionDTO[] } +type WorkflowInput = { + collections: ProductTypes.CreateProductCollectionDTO[] + additional_data?: Record +} export const createCollectionsWorkflowId = "create-collections" export const createCollectionsWorkflow = createWorkflow( createCollectionsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { - return new WorkflowResponse(createCollectionsStep(input.collections)) + (input: WorkflowData) => { + const collections = createCollectionsStep(input.collections) + const collectionsCreated = createHook("collectionsCreated", { + collections, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(collections, { + hooks: [collectionsCreated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-product-options.ts b/packages/core/core-flows/src/product/workflows/create-product-options.ts index 37d69fa1856d0..816c8a8642635 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-options.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-options.ts @@ -2,18 +2,29 @@ import { ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, } from "@medusajs/workflows-sdk" import { createProductOptionsStep } from "../steps" -type WorkflowInput = { product_options: ProductTypes.CreateProductOptionDTO[] } +type WorkflowInput = { + product_options: ProductTypes.CreateProductOptionDTO[] + additional_data?: Record +} export const createProductOptionsWorkflowId = "create-product-options" + export const createProductOptionsWorkflow = createWorkflow( createProductOptionsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { - return new WorkflowResponse(createProductOptionsStep(input.product_options)) + (input: WorkflowData) => { + const productOptions = createProductOptionsStep(input.product_options) + const productOptionsCreated = createHook("productOptionsCreated", { + product_options: productOptions, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(productOptions, { + hooks: [productOptionsCreated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-product-tags.ts b/packages/core/core-flows/src/product/workflows/create-product-tags.ts index da4cd71100dcc..7e1910f9566e6 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-tags.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-tags.ts @@ -2,18 +2,29 @@ import { ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, } from "@medusajs/workflows-sdk" import { createProductTagsStep } from "../steps" -type WorkflowInput = { product_tags: ProductTypes.CreateProductTagDTO[] } +type WorkflowInput = { + product_tags: ProductTypes.CreateProductTagDTO[] + additional_data?: Record +} export const createProductTagsWorkflowId = "create-product-tags" + export const createProductTagsWorkflow = createWorkflow( createProductTagsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { - return new WorkflowResponse(createProductTagsStep(input.product_tags)) + (input: WorkflowData) => { + const productTags = createProductTagsStep(input.product_tags) + const productTagsCreated = createHook("productTagsCreated", { + product_tags: productTags, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(productTags, { + hooks: [productTagsCreated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-product-types.ts b/packages/core/core-flows/src/product/workflows/create-product-types.ts index 5c94edb1d918f..1d0ea51f4ecef 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-types.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-types.ts @@ -2,18 +2,29 @@ import { ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, } from "@medusajs/workflows-sdk" import { createProductTypesStep } from "../steps" -type WorkflowInput = { product_types: ProductTypes.CreateProductTypeDTO[] } +type WorkflowInput = { + product_types: ProductTypes.CreateProductTypeDTO[] + additional_data?: Record +} export const createProductTypesWorkflowId = "create-product-types" + export const createProductTypesWorkflow = createWorkflow( createProductTypesWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { - return new WorkflowResponse(createProductTypesStep(input.product_types)) + (input: WorkflowData) => { + const productTypes = createProductTypesStep(input.product_types) + const productTypesCreated = createHook("productTypesCreated", { + product_types: productTypes, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(productTypes, { + hooks: [productTypesCreated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-product-variants.ts b/packages/core/core-flows/src/product/workflows/create-product-variants.ts index 3df7bc4aaa5cf..554adbfada9f7 100644 --- a/packages/core/core-flows/src/product/workflows/create-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/create-product-variants.ts @@ -3,6 +3,7 @@ import { InventoryTypes, PricingTypes, ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -24,6 +25,7 @@ type WorkflowInput = { required_quantity?: number }[] })[] + additional_data?: Record } const buildLink = ( @@ -118,11 +120,10 @@ const buildVariantItemCreateMap = (data: { } export const createProductVariantsWorkflowId = "create-product-variants" + export const createProductVariantsWorkflow = createWorkflow( createProductVariantsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { + (input: WorkflowData) => { // Passing prices to the product module will fail, we want to keep them for after the variant is created. const variantsWithoutPrices = transform({ input }, (data) => data.input.product_variants.map((v) => ({ @@ -224,6 +225,13 @@ export const createProductVariantsWorkflow = createWorkflow( } ) - return new WorkflowResponse(response) + const productVariantsCreated = createHook("productVariantsCreated", { + product_variants: response, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(response, { + hooks: [productVariantsCreated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/create-products.ts b/packages/core/core-flows/src/product/workflows/create-products.ts index 7283715a41a3d..83601112b92be 100644 --- a/packages/core/core-flows/src/product/workflows/create-products.ts +++ b/packages/core/core-flows/src/product/workflows/create-products.ts @@ -7,6 +7,7 @@ import { isPresent } from "@medusajs/utils" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -16,14 +17,14 @@ import { createProductVariantsWorkflow } from "./create-product-variants" type WorkflowInput = { products: CreateProductWorkflowInputDTO[] + additional_data?: Record } export const createProductsWorkflowId = "create-products" + export const createProductsWorkflow = createWorkflow( createProductsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { + (input: WorkflowData) => { // Passing prices to the product module will fail, we want to keep them for after the product is created. const productWithoutExternalRelations = transform({ input }, (data) => data.input.products.map((p) => ({ @@ -98,6 +99,13 @@ export const createProductsWorkflow = createWorkflow( } ) - return new WorkflowResponse(response) + const productsCreated = createHook("productsCreated", { + products: response, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(response, { + hooks: [productsCreated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/delete-collections.ts b/packages/core/core-flows/src/product/workflows/delete-collections.ts index 8d518b7503df2..e5fe903a1fa06 100644 --- a/packages/core/core-flows/src/product/workflows/delete-collections.ts +++ b/packages/core/core-flows/src/product/workflows/delete-collections.ts @@ -1,12 +1,25 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createHook, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deleteCollectionsStep } from "../steps" type WorkflowInput = { ids: string[] } export const deleteCollectionsWorkflowId = "delete-collections" + export const deleteCollectionsWorkflow = createWorkflow( deleteCollectionsWorkflowId, - (input: WorkflowData): WorkflowData => { - return deleteCollectionsStep(input.ids) + (input: WorkflowData) => { + const deletedCollections = deleteCollectionsStep(input.ids) + const collectionsDeleted = createHook("collectionsDeleted", { + ids: input.ids, + }) + + return new WorkflowResponse(deletedCollections, { + hooks: [collectionsDeleted], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/delete-product-options.ts b/packages/core/core-flows/src/product/workflows/delete-product-options.ts index 209d9ceaa82a1..10f850aff8365 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-options.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-options.ts @@ -1,4 +1,9 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createHook, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deleteProductOptionsStep } from "../steps" type WorkflowInput = { ids: string[] } @@ -6,7 +11,14 @@ type WorkflowInput = { ids: string[] } export const deleteProductOptionsWorkflowId = "delete-product-options" export const deleteProductOptionsWorkflow = createWorkflow( deleteProductOptionsWorkflowId, - (input: WorkflowData): WorkflowData => { - return deleteProductOptionsStep(input.ids) + (input: WorkflowData) => { + const deletedProductOptions = deleteProductOptionsStep(input.ids) + const productOptionsDeleted = createHook("productOptionsDeleted", { + ids: input.ids, + }) + + return new WorkflowResponse(deletedProductOptions, { + hooks: [productOptionsDeleted], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/delete-product-tags.ts b/packages/core/core-flows/src/product/workflows/delete-product-tags.ts index 23d079bc37c87..b2789b093b156 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-tags.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-tags.ts @@ -1,4 +1,9 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createHook, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deleteProductTagsStep } from "../steps" type WorkflowInput = { ids: string[] } @@ -6,7 +11,14 @@ type WorkflowInput = { ids: string[] } export const deleteProductTagsWorkflowId = "delete-product-tags" export const deleteProductTagsWorkflow = createWorkflow( deleteProductTagsWorkflowId, - (input: WorkflowData): WorkflowData => { - return deleteProductTagsStep(input.ids) + (input: WorkflowData) => { + const deletedProductTags = deleteProductTagsStep(input.ids) + const productTagsDeleted = createHook("productTagsDeleted", { + ids: input.ids, + }) + + return new WorkflowResponse(deletedProductTags, { + hooks: [productTagsDeleted], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/delete-product-types.ts b/packages/core/core-flows/src/product/workflows/delete-product-types.ts index 294350909261e..9c114d5dc6c37 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-types.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-types.ts @@ -1,4 +1,9 @@ -import { WorkflowData, createWorkflow } from "@medusajs/workflows-sdk" +import { + WorkflowData, + WorkflowResponse, + createHook, + createWorkflow, +} from "@medusajs/workflows-sdk" import { deleteProductTypesStep } from "../steps" type WorkflowInput = { ids: string[] } @@ -6,7 +11,14 @@ type WorkflowInput = { ids: string[] } export const deleteProductTypesWorkflowId = "delete-product-types" export const deleteProductTypesWorkflow = createWorkflow( deleteProductTypesWorkflowId, - (input: WorkflowData): WorkflowData => { - return deleteProductTypesStep(input.ids) + (input: WorkflowData) => { + const deletedProductTypes = deleteProductTypesStep(input.ids) + const productTypesDeleted = createHook("productTypesDeleted", { + ids: input.ids, + }) + + return new WorkflowResponse(deletedProductTypes, { + hooks: [productTypesDeleted], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/delete-product-variants.ts b/packages/core/core-flows/src/product/workflows/delete-product-variants.ts index c61adc7dce08c..7384da8f7e5b9 100644 --- a/packages/core/core-flows/src/product/workflows/delete-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/delete-product-variants.ts @@ -1,4 +1,9 @@ -import { createWorkflow, WorkflowData } from "@medusajs/workflows-sdk" +import { + createHook, + createWorkflow, + WorkflowData, + WorkflowResponse, +} from "@medusajs/workflows-sdk" import { deleteProductVariantsStep } from "../steps" import { removeRemoteLinkStep } from "../../common" import { Modules } from "@medusajs/utils" @@ -8,11 +13,18 @@ type WorkflowInput = { ids: string[] } export const deleteProductVariantsWorkflowId = "delete-product-variants" export const deleteProductVariantsWorkflow = createWorkflow( deleteProductVariantsWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData) => { removeRemoteLinkStep({ [Modules.PRODUCT]: { variant_id: input.ids }, }).config({ name: "remove-variant-link-step" }) - return deleteProductVariantsStep(input.ids) + const deletedProductVariants = deleteProductVariantsStep(input.ids) + const productVariantsDeleted = createHook("productVariantsDeleted", { + ids: input.ids, + }) + + return new WorkflowResponse(deletedProductVariants, { + hooks: [productVariantsDeleted], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/delete-products.ts b/packages/core/core-flows/src/product/workflows/delete-products.ts index f09a704a155e8..5593023beeb48 100644 --- a/packages/core/core-flows/src/product/workflows/delete-products.ts +++ b/packages/core/core-flows/src/product/workflows/delete-products.ts @@ -1,8 +1,10 @@ import { + createHook, createWorkflow, parallelize, transform, WorkflowData, + WorkflowResponse, } from "@medusajs/workflows-sdk" import { removeRemoteLinkStep } from "../../common" import { deleteProductsStep } from "../steps/delete-products" @@ -14,7 +16,7 @@ type WorkflowInput = { ids: string[] } export const deleteProductsWorkflowId = "delete-products" export const deleteProductsWorkflow = createWorkflow( deleteProductsWorkflowId, - (input: WorkflowData): WorkflowData => { + (input: WorkflowData) => { const productsToDelete = getProductsStep({ ids: input.ids }) const variantsToBeDeleted = transform({ productsToDelete }, (data) => { return data.productsToDelete @@ -32,6 +34,12 @@ export const deleteProductsWorkflow = createWorkflow( deleteProductsStep(input.ids) ) - return deletedProduct + const productsDeleted = createHook("productsDeleted", { + ids: input.ids, + }) + + return new WorkflowResponse(deletedProduct, { + hooks: [productsDeleted], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-collections.ts b/packages/core/core-flows/src/product/workflows/update-collections.ts index 3a87c07299c82..9a6dae2f80d38 100644 --- a/packages/core/core-flows/src/product/workflows/update-collections.ts +++ b/packages/core/core-flows/src/product/workflows/update-collections.ts @@ -2,6 +2,7 @@ import { ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, } from "@medusajs/workflows-sdk" import { updateCollectionsStep } from "../steps" @@ -9,6 +10,7 @@ import { updateCollectionsStep } from "../steps" type UpdateCollectionsStepInput = { selector: ProductTypes.FilterableProductCollectionProps update: ProductTypes.UpdateProductCollectionDTO + additional_data?: Record } type WorkflowInput = UpdateCollectionsStepInput @@ -16,9 +18,15 @@ type WorkflowInput = UpdateCollectionsStepInput export const updateCollectionsWorkflowId = "update-collections" export const updateCollectionsWorkflow = createWorkflow( updateCollectionsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { - return new WorkflowResponse(updateCollectionsStep(input)) + (input: WorkflowData) => { + const updatedCollections = updateCollectionsStep(input) + const collectionsUpdated = createHook("collectionsUpdated", { + additional_data: input.additional_data, + collections: updateCollectionsStep, + }) + + return new WorkflowResponse(updatedCollections, { + hooks: [collectionsUpdated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-product-options.ts b/packages/core/core-flows/src/product/workflows/update-product-options.ts index 4b31b83520e67..1ac16a4995390 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-options.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-options.ts @@ -2,6 +2,7 @@ import { ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, } from "@medusajs/workflows-sdk" import { updateProductOptionsStep } from "../steps" @@ -9,6 +10,7 @@ import { updateProductOptionsStep } from "../steps" type UpdateProductOptionsStepInput = { selector: ProductTypes.FilterableProductOptionProps update: ProductTypes.UpdateProductOptionDTO + additional_data?: Record } type WorkflowInput = UpdateProductOptionsStepInput @@ -16,9 +18,15 @@ type WorkflowInput = UpdateProductOptionsStepInput export const updateProductOptionsWorkflowId = "update-product-options" export const updateProductOptionsWorkflow = createWorkflow( updateProductOptionsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { - return new WorkflowResponse(updateProductOptionsStep(input)) + (input: WorkflowData) => { + const updatedProductOptions = updateProductOptionsStep(input) + const productOptionsUpdated = createHook("productOptionsUpdated", { + product_options: updatedProductOptions, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(updatedProductOptions, { + hooks: [productOptionsUpdated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-product-tags.ts b/packages/core/core-flows/src/product/workflows/update-product-tags.ts index 05da7b0c044a6..4fd67c0820335 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-tags.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-tags.ts @@ -2,6 +2,7 @@ import { ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, } from "@medusajs/workflows-sdk" import { updateProductTagsStep } from "../steps" @@ -9,6 +10,7 @@ import { updateProductTagsStep } from "../steps" type UpdateProductTagsStepInput = { selector: ProductTypes.FilterableProductTypeProps update: ProductTypes.UpdateProductTypeDTO + additional_data?: Record } type WorkflowInput = UpdateProductTagsStepInput @@ -16,9 +18,14 @@ type WorkflowInput = UpdateProductTagsStepInput export const updateProductTagsWorkflowId = "update-product-tags" export const updateProductTagsWorkflow = createWorkflow( updateProductTagsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { - return new WorkflowResponse(updateProductTagsStep(input)) + (input: WorkflowData) => { + const updatedProductTags = updateProductTagsStep(input) + const productTagsUpdated = createHook("productTagsUpdated", { + product_tags: updatedProductTags, + additional_data: input.additional_data, + }) + return new WorkflowResponse(updatedProductTags, { + hooks: [productTagsUpdated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-product-types.ts b/packages/core/core-flows/src/product/workflows/update-product-types.ts index 8f6e27a35131b..3cfc55c4475e1 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-types.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-types.ts @@ -2,6 +2,7 @@ import { ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, } from "@medusajs/workflows-sdk" import { updateProductTypesStep } from "../steps" @@ -9,6 +10,7 @@ import { updateProductTypesStep } from "../steps" type UpdateProductTypesStepInput = { selector: ProductTypes.FilterableProductTypeProps update: ProductTypes.UpdateProductTypeDTO + additional_data?: Record } type WorkflowInput = UpdateProductTypesStepInput @@ -16,9 +18,15 @@ type WorkflowInput = UpdateProductTypesStepInput export const updateProductTypesWorkflowId = "update-product-types" export const updateProductTypesWorkflow = createWorkflow( updateProductTypesWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { - return new WorkflowResponse(updateProductTypesStep(input)) + (input: WorkflowData) => { + const updatedProductTypes = updateProductTypesStep(input) + const productTypesUpdated = createHook("productTypesUpdated", { + product_types: updatedProductTypes, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(updatedProductTypes, { + hooks: [productTypesUpdated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-product-variants.ts b/packages/core/core-flows/src/product/workflows/update-product-variants.ts index 8fb541dd50e28..44724db92ab15 100644 --- a/packages/core/core-flows/src/product/workflows/update-product-variants.ts +++ b/packages/core/core-flows/src/product/workflows/update-product-variants.ts @@ -2,6 +2,7 @@ import { PricingTypes, ProductTypes } from "@medusajs/types" import { WorkflowData, WorkflowResponse, + createHook, createWorkflow, transform, } from "@medusajs/workflows-sdk" @@ -22,14 +23,14 @@ type UpdateProductVariantsStepInput = })[] } -type WorkflowInput = UpdateProductVariantsStepInput +type WorkflowInput = UpdateProductVariantsStepInput & { + additional_data?: Record +} export const updateProductVariantsWorkflowId = "update-product-variants" export const updateProductVariantsWorkflow = createWorkflow( updateProductVariantsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { + (input: WorkflowData) => { // Passing prices to the product module will fail, we want to keep them for after the variant is updated. const updateWithoutPrices = transform({ input }, (data) => { if ("product_variants" in data.input) { @@ -120,7 +121,7 @@ export const updateProductVariantsWorkflow = createWorkflow( updatedPriceSets, }, (data) => { - return data.updatedVariants.map((variant, i) => { + return data.updatedVariants.map((variant) => { const linkForVariant = data.variantPriceSetLinks?.find( (link) => link.variant_id === variant.id ) @@ -134,6 +135,13 @@ export const updateProductVariantsWorkflow = createWorkflow( } ) - return new WorkflowResponse(response) + const productVariantsUpdated = createHook("productVariantsUpdated", { + product_variants: response, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(response, { + hooks: [productVariantsUpdated], + }) } ) diff --git a/packages/core/core-flows/src/product/workflows/update-products.ts b/packages/core/core-flows/src/product/workflows/update-products.ts index b360f8a3b7d7e..1472c553eaf54 100644 --- a/packages/core/core-flows/src/product/workflows/update-products.ts +++ b/packages/core/core-flows/src/product/workflows/update-products.ts @@ -7,6 +7,7 @@ import { } from "@medusajs/types" import { arrayDifference, Modules } from "@medusajs/utils" import { + createHook, createWorkflow, transform, WorkflowData, @@ -26,6 +27,7 @@ type UpdateProductsStepInputSelector = { sales_channels?: { id: string }[] variants?: UpdateProductVariantWorkflowInputDTO[] } + additional_data?: Record } type UpdateProductsStepInputProducts = { @@ -33,6 +35,7 @@ type UpdateProductsStepInputProducts = { sales_channels?: { id: string }[] variants?: UpdateProductVariantWorkflowInputDTO[] })[] + additional_data?: Record } type UpdateProductsStepInput = @@ -210,9 +213,7 @@ function prepareToDeleteSalesChannelLinks({ export const updateProductsWorkflowId = "update-products" export const updateProductsWorkflow = createWorkflow( updateProductsWorkflowId, - ( - input: WorkflowData - ): WorkflowResponse => { + (input: WorkflowData) => { const previousVariantIds = getVariantIdsForProductsStep(input) const toUpdateInput = transform({ input }, prepareUpdateProductInput) @@ -248,9 +249,15 @@ export const updateProductsWorkflow = createWorkflow( }) dismissRemoteLinkStep(toDeleteSalesChannelLinks) - createRemoteLinkStep(salesChannelLinks) - return new WorkflowResponse(updatedProducts) + const productsUpdated = createHook("productsUpdated", { + products: updatedProducts, + additional_data: input.additional_data, + }) + + return new WorkflowResponse(updatedProducts, { + hooks: [productsUpdated], + }) } )