2022-01-14 13:33:59 -05:00

61 lines
1.9 KiB
TypeScript

import getCustomerId from '../../utils/get-customer-id'
import type { WishlistEndpoint } from '.'
import { normalizeWishlistItem } from '../../../lib/normalize'
import removeItemFromWishlistMutation from '../../mutations/removeItemFromWishlist-mutation'
// Return wishlist info
const removeItem: WishlistEndpoint['handlers']['removeItem'] = async ({
res,
body: { customerToken, itemId },
config,
commerce,
}) => {
const token = customerToken ? Buffer.from(customerToken, 'base64').toString('ascii'): null;
const accessToken = token ? JSON.parse(token).accessToken : null;
let result: { data?: any } = {}
let wishlist: any
const customerId = customerToken && (await getCustomerId({ customerToken, config }))
const wishlistName= config.defaultWishlistName
const wishlistResponse = await commerce.getCustomerWishlist({
variables: { customerId, wishlistName },
config,
})
wishlist= wishlistResponse?.wishlist
if (!wishlist || !itemId) {
return res.status(400).json({
data: null,
errors: [{ message: 'Invalid request' }],
})
}
const removedItem = wishlist?.items?.find(
(item:any) => {
return item.product.productCode === itemId;
}
);
const removeItemFromWishlistResponse = await config.fetch(
removeItemFromWishlistMutation,
{
variables: {
wishlistId: wishlist?.id,
wishlistItemId: removedItem?.id
},
},
{ headers: { 'x-vol-user-claims': accessToken } }
)
if(removeItemFromWishlistResponse?.data?.deleteWishlistItem){
const wishlistResponse= await commerce.getCustomerWishlist({
variables: { customerId, wishlistName },
config,
})
wishlist= wishlistResponse?.wishlist
}
result = { data: {...wishlist, items: wishlist?.items?.map((item:any) => normalizeWishlistItem(item, config))} }
res.status(200).json({ data: result?.data })
}
export default removeItem