docs: add Sanity integration guide (#10152)

* docs: add integrate to Sanity guide

* address PR feedback

* added more screenshots

* edit introduction

* added meta images + changes
This commit is contained in:
Shahed Nasser authored and GitHub committed 2024-11-20 16:17:33 +02:00
1 parent 6680f69588
commit a429a267f1
19 files changed
+2150 -92

No files matched your search

@@ -1681,17 +1681,17 @@ import {
createWorkflow,
transform,
when,
WorkflowResponse
WorkflowResponse,
} from "@medusajs/framework/workflows-sdk"
import {
completeCartWorkflow,
useQueryGraphStep,
createRemoteLinkStep,
createOrderFulfillmentWorkflow,
emitEventStep
emitEventStep,
} from "@medusajs/medusa/core-flows"
import {
Modules
Modules,
} from "@medusajs/framework/utils"
import createDigitalProductOrderStep from "./steps/create-digital-product-order"
import { DIGITAL_PRODUCT_MODULE } from "../../modules/digital-product"
@@ -1705,8 +1705,8 @@ const createDigitalProductOrderWorkflow = createWorkflow(
(input: WorkflowInput) => {
const { id } = completeCartWorkflow.runAsStep({
input: {
id: input.cart_id
}
id: input.cart_id,
},
})
const { data: orders } = useQueryGraphStep({
@@ -1715,18 +1715,18 @@ const createDigitalProductOrderWorkflow = createWorkflow(
"*",
"items.*",
"items.variant.*",
"items.variant.digital_product.*"
"items.variant.digital_product.*",
],
filters: {
id
id,
},
options: {
throwIfKeyNotFound: true
}
throwIfKeyNotFound: true,
},
})
const itemsWithDigitalProducts = transform({
orders
orders,
},
(data) => {
return data.orders[0].items.filter((item) => item.variant.digital_product !== undefined)
@@ -1740,37 +1740,37 @@ const createDigitalProductOrderWorkflow = createWorkflow(
const {
digital_product_order,
} = createDigitalProductOrderStep({
items: orders[0].items
items: orders[0].items,
})
createRemoteLinkStep([{
[DIGITAL_PRODUCT_MODULE]: {
digital_product_order_id: digital_product_order.id
digital_product_order_id: digital_product_order.id,
},
[Modules.ORDER]: {
order_id: id
}
order_id: id,
},
}])
createOrderFulfillmentWorkflow.runAsStep({
input: {
order_id: id,
items: transform({
itemsWithDigitalProducts
itemsWithDigitalProducts,
}, (data) => {
return data.itemsWithDigitalProducts.map((item) => ({
id: item.id,
quantity: item.quantity
quantity: item.quantity,
}))
})
}
}),
},
})
emitEventStep({
eventName: "digital_product_order.created",
data: {
id: digital_product_order.id
}
id: digital_product_order.id,
},
})
return digital_product_order
@@ -1778,7 +1778,7 @@ const createDigitalProductOrderWorkflow = createWorkflow(
return new WorkflowResponse({
order: orders[0],
digital_product_order
digital_product_order,
})
}
)
@@ -1970,7 +1970,7 @@ export const fulfillWorkflowHighlights = [
```ts title="src/workflows/fulfill-digital-order/index.ts" highlights={fulfillWorkflowHighlights} collapsibleLines="1-10" expandMoreLabel="Show Imports"
import {
createWorkflow,
WorkflowResponse
WorkflowResponse,
} from "@medusajs/framework/workflows-sdk"
import {
useQueryGraphStep,
@@ -1990,18 +1990,18 @@ export const fulfillDigitalOrderWorkflow = createWorkflow(
"*",
"products.*",
"products.medias.*",
"order.*"
"order.*",
],
filters: {
id,
},
options: {
throwIfKeyNotFound: true
}
throwIfKeyNotFound: true,
},
})
sendDigitalOrderNotificationStep({
digital_product_order: digitalProductOrders[0]
digital_product_order: digitalProductOrders[0],
})
return new WorkflowResponse(
@@ -1145,7 +1145,7 @@ export const createVendorOrdersWorkflowHighlights = [
```ts title="src/workflows/marketplace/create-vendor-orders/index.ts" collapsibleLines="1-13" expandMoreLabel="Show Imports"
import {
createWorkflow,
WorkflowResponse
WorkflowResponse,
} from "@medusajs/framework/workflows-sdk"
import {
useQueryGraphStep,
@@ -1165,21 +1165,21 @@ const createVendorOrdersWorkflow = createWorkflow(
(input: WorkflowInput) => {
const { data: carts } = useQueryGraphStep({
entity: "cart",
fields: ['items.*'],
fields: ["items.*"],
filters: { id: input.cart_id },
options: {
throwIfKeyNotFound: true
}
throwIfKeyNotFound: true,
},
})
const { id: orderId } = completeCartWorkflow.runAsStep({
input: {
id: carts[0].id
}
id: carts[0].id,
},
})
const { vendorsItems } = groupVendorItemsStep({
cart: carts[0].id
cart: carts[0].id,
})
const order = getOrderDetailWorkflow.runAsStep({
@@ -1200,17 +1200,17 @@ const createVendorOrdersWorkflow = createWorkflow(
const {
orders: vendorOrders,
linkDefs
linkDefs,
} = createVendorOrdersStep({
parentOrder: order,
vendorsItems
vendorsItems,
})
createRemoteLinkStep(linkDefs)
return new WorkflowResponse({
parent_order: order,
vendor_orders: vendorOrders
vendor_orders: vendorOrders,
})
}
)
@@ -600,15 +600,15 @@ export const createSubscriptionWorkflowHighlights = [
```ts title="src/workflows/create-subscription/index.ts" highlights={createSubscriptionWorkflowHighlights} collapsibleLines="1-13" expandMoreLabel="Show Imports"
import {
createWorkflow,
WorkflowResponse
WorkflowResponse,
} from "@medusajs/framework/workflows-sdk"
import {
createRemoteLinkStep,
completeCartWorkflow,
useQueryGraphStep
useQueryGraphStep,
} from "@medusajs/medusa/core-flows"
import {
SubscriptionInterval
SubscriptionInterval,
} from "../../modules/subscription/types"
import createSubscriptionStep from "./steps/create-subscription"
@@ -625,33 +625,33 @@ const createSubscriptionWorkflow = createWorkflow(
(input: WorkflowInput) => {
const { id } = completeCartWorkflow.runAsStep({
input: {
id: input.cart_id
}
id: input.cart_id,
},
})
const { data: orders } = useQueryGraphStep({
entity: "order",
fields: ["*", "id", "customer_id"],
filters: {
id
id,
},
options: {
throwIfKeyNotFound: true
}
throwIfKeyNotFound: true,
},
})
const { subscription, linkDefs } = createSubscriptionStep({
cart_id: input.cart_id,
order_id: orders[0].id,
customer_id: orders[0].customer_id,
subscription_data: input.subscription_data
subscription_data: input.subscription_data,
})
createRemoteLinkStep(linkDefs)
return new WorkflowResponse({
subscription: subscription,
order: orders[0]
order: orders[0],
})
}
)
@@ -1786,14 +1786,14 @@ import {
useQueryGraphStep,
createPaymentSessionsWorkflow,
createRemoteLinkStep,
capturePaymentStep
capturePaymentStep,
} from "@medusajs/medusa/core-flows"
import {
SubscriptionData
SubscriptionData,
} from "../../modules/subscription/types"
import {
authorizePaymentSessionStep,
createPaymentCollectionsStep
createPaymentCollectionsStep,
} from "@medusajs/medusa/core-flows"
import createSubscriptionOrderStep from "./steps/create-subscription-order"
import updateSubscriptionStep from "./steps/update-subscription"
@@ -1819,21 +1819,21 @@ const createSubscriptionOrderWorkflow = createWorkflow(
"cart.shipping_methods.tax_lines.*",
"cart.shipping_methods.adjustments.*",
"cart.payment_collection.*",
"cart.payment_collection.payment_sessions.*"
"cart.payment_collection.payment_sessions.*",
],
filters: {
id: [input.subscription.id]
id: [input.subscription.id],
},
options: {
throwIfKeyNotFound: true
}
throwIfKeyNotFound: true,
},
})
const payment_collection = createPaymentCollectionsStep([{
region_id: carts[0].region_id,
currency_code: carts[0].currency_code,
amount: carts[0].payment_collection.amount,
metadata: carts[0].payment_collection.metadata
metadata: carts[0].payment_collection.metadata,
}])[0]
const paymentSession = createPaymentSessionsWorkflow.runAsStep({
@@ -1841,34 +1841,34 @@ const createSubscriptionOrderWorkflow = createWorkflow(
payment_collection_id: payment_collection.id,
provider_id: carts[0].payment_collection.payment_sessions[0].provider_id,
data: carts[0].payment_collection.payment_sessions[0].data,
context: carts[0].payment_collection.payment_sessions[0].context
}
context: carts[0].payment_collection.payment_sessions[0].context,
},
})
const payment = authorizePaymentSessionStep({
id: paymentSession.id,
context: paymentSession.context
context: paymentSession.context,
})
const { order, linkDefs } = createSubscriptionOrderStep({
subscription: input.subscription,
cart: carts[0],
payment_collection
payment_collection,
})
createRemoteLinkStep(linkDefs)
capturePaymentStep({
payment_id: payment.id,
amount: payment.amount
amount: payment.amount,
})
updateSubscriptionStep({
subscription_id: input.subscription.id
subscription_id: input.subscription.id,
})
return new WorkflowResponse({
order
order,
})
}
)