Chloe 94a145b604 Add custome checkout function
Signed-off-by: Chloe <pinkcloudvnn@gmail.com>
2022-05-08 13:04:25 +07:00

74 lines
2.1 KiB
TypeScript

import setShippingAddressOnCartMutation from '../../../mutations/add-shipping-address'
import type { CustomerAddressEndpoint } from '.'
import updateFulfillmentOptions from '../../../mutations/update-fulfillment-options'
import selectFulfillmentOptions from '../../../mutations/select-fulfillment-options'
const addItem: CustomerAddressEndpoint['handlers']['addItem'] = async ({
res,
body: { item, cartId },
config: { fetch, anonymousCartTokenCookie },
req: { cookies },
}) => {
// Return an error if no cart is present
if (!cartId) {
return res.status(400).json({
data: null,
errors: [{ message: 'Cookie not found' }],
})
}
// Register address
const {
data: { setShippingAddressOnCart },
} = await fetch(setShippingAddressOnCartMutation, {
variables: {
input: {
address: {
address1: item.streetNumber || 'NextJS storefront',
country: item.country,
fullName: `${item.firstName || 'Test'} ${
item.lastName || 'Account'
}}`,
city: item.city || 'LA',
phone: '0123456789',
postal: item.zipCode || '1234567',
region: item.city || 'LA',
},
cartId,
cartToken: cookies[anonymousCartTokenCookie],
},
},
})
const {
data: { updateFulfillmentOptionsForGroup },
} = await fetch(updateFulfillmentOptions, {
variables: {
input: {
cartId,
fulfillmentGroupId:
setShippingAddressOnCart.cart.checkout.fulfillmentGroups[0]._id,
},
},
})
await fetch(selectFulfillmentOptions, {
variables: {
input: {
cartId,
cartToken: cookies[anonymousCartTokenCookie],
fulfillmentGroupId:
updateFulfillmentOptionsForGroup.cart.checkout.fulfillmentGroups[0]
._id,
fulfillmentMethodId:
updateFulfillmentOptionsForGroup.cart.checkout.fulfillmentGroups[0]
.availableFulfillmentOptions[0].fulfillmentMethod._id,
},
},
})
return res.status(200).json({ data: null, errors: [] })
}
export default addItem