forked from crowetic/commerce
* Implement custom checkout core * Fix elements on core * Add files to providers * Adapt providers * Update types * Update shopify file * Format files
39 lines
998 B
TypeScript
39 lines
998 B
TypeScript
import {
|
|
SHOPIFY_CHECKOUT_ID_COOKIE,
|
|
SHOPIFY_CHECKOUT_URL_COOKIE,
|
|
SHOPIFY_CUSTOMER_TOKEN_COOKIE,
|
|
} from '../../../const'
|
|
import associateCustomerWithCheckoutMutation from '../../../utils/mutations/associate-customer-with-checkout'
|
|
import type { CheckoutEndpoint } from '.'
|
|
|
|
const submitCheckout: CheckoutEndpoint['handlers']['submitCheckout'] = async ({
|
|
req,
|
|
res,
|
|
config,
|
|
}) => {
|
|
const { cookies } = req
|
|
const checkoutUrl = cookies[SHOPIFY_CHECKOUT_URL_COOKIE]
|
|
const customerCookie = cookies[SHOPIFY_CUSTOMER_TOKEN_COOKIE]
|
|
|
|
if (customerCookie) {
|
|
try {
|
|
await config.fetch(associateCustomerWithCheckoutMutation, {
|
|
variables: {
|
|
checkoutId: cookies[SHOPIFY_CHECKOUT_ID_COOKIE],
|
|
customerAccessToken: cookies[SHOPIFY_CUSTOMER_TOKEN_COOKIE],
|
|
},
|
|
})
|
|
} catch (error) {
|
|
console.error(error)
|
|
}
|
|
}
|
|
|
|
if (checkoutUrl) {
|
|
res.redirect(checkoutUrl)
|
|
} else {
|
|
res.redirect('/cart')
|
|
}
|
|
}
|
|
|
|
export default submitCheckout
|