mirror of
https://github.com/vercel/commerce.git
synced 2025-05-18 23:46:58 +00:00
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import CookieHandler from '../../../api/utils/cookie-handler'
|
|
import { normalizeCart } from '../../../lib/normalize'
|
|
import { Cart } from '../../../schema'
|
|
import type { CartEndpoint } from '.'
|
|
import { getCartQuery } from '../../queries/get-cart-query'
|
|
|
|
const getCart: CartEndpoint['handlers']['getCart'] = async ({
|
|
req,
|
|
res,
|
|
body: { cartId },
|
|
config,
|
|
}) => {
|
|
let currentCart: Cart = {}
|
|
try {
|
|
const cookieHandler = new CookieHandler(config, req, res)
|
|
let accessToken = null
|
|
|
|
if (!cookieHandler.getAccessToken()) {
|
|
let anonymousShopperTokenResponse = await cookieHandler.getAnonymousToken()
|
|
const response = anonymousShopperTokenResponse.response
|
|
accessToken = anonymousShopperTokenResponse.accessToken
|
|
cookieHandler.setAnonymousShopperCookie(response)
|
|
} else {
|
|
accessToken = cookieHandler.getAccessToken()
|
|
}
|
|
|
|
let result = await config.fetch(
|
|
getCartQuery,
|
|
{},
|
|
{ headers: { 'x-vol-user-claims': accessToken } }
|
|
)
|
|
currentCart = result?.data?.currentCart
|
|
} catch (error) {
|
|
throw error
|
|
}
|
|
res.status(200).json({
|
|
data: currentCart ? normalizeCart(currentCart) : null,
|
|
})
|
|
}
|
|
|
|
export default getCart
|