mirror of
https://github.com/vercel/commerce.git
synced 2025-06-19 05:31:22 +00:00
Removed old wishlist stuff
This commit is contained in:
parent
a1167e46f7
commit
29a720e75e
@ -1,56 +0,0 @@
|
|||||||
import type { WishlistHandlers } from '..'
|
|
||||||
import getCustomerId from '../../endpoints/wishlist/utils/get-customer-id'
|
|
||||||
import getCustomerWishlist from '../../operations/get-customer-wishlist'
|
|
||||||
import { parseWishlistItem } from '../../utils/parse-item'
|
|
||||||
|
|
||||||
// Returns the wishlist of the signed customer
|
|
||||||
const addItem: WishlistHandlers['addItem'] = async ({
|
|
||||||
res,
|
|
||||||
body: { customerToken, item },
|
|
||||||
config,
|
|
||||||
}) => {
|
|
||||||
if (!item) {
|
|
||||||
return res.status(400).json({
|
|
||||||
data: null,
|
|
||||||
errors: [{ message: 'Missing item' }],
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const customerId =
|
|
||||||
customerToken && (await getCustomerId({ customerToken, config }))
|
|
||||||
|
|
||||||
if (!customerId) {
|
|
||||||
return res.status(400).json({
|
|
||||||
data: null,
|
|
||||||
errors: [{ message: 'Invalid request' }],
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const { wishlist } = await getCustomerWishlist({
|
|
||||||
variables: { customerId },
|
|
||||||
config,
|
|
||||||
})
|
|
||||||
const options = {
|
|
||||||
method: 'POST',
|
|
||||||
body: JSON.stringify(
|
|
||||||
wishlist
|
|
||||||
? {
|
|
||||||
items: [parseWishlistItem(item)],
|
|
||||||
}
|
|
||||||
: {
|
|
||||||
name: 'Wishlist',
|
|
||||||
customer_id: customerId,
|
|
||||||
items: [parseWishlistItem(item)],
|
|
||||||
is_public: false,
|
|
||||||
}
|
|
||||||
),
|
|
||||||
}
|
|
||||||
|
|
||||||
const { data } = wishlist
|
|
||||||
? await config.storeApiFetch(`/v3/wishlists/${wishlist.id}/items`, options)
|
|
||||||
: await config.storeApiFetch('/v3/wishlists', options)
|
|
||||||
|
|
||||||
res.status(200).json({ data })
|
|
||||||
}
|
|
||||||
|
|
||||||
export default addItem
|
|
@ -1,37 +0,0 @@
|
|||||||
import getCustomerId from '../../endpoints/wishlist/utils/get-customer-id'
|
|
||||||
import getCustomerWishlist from '../../operations/get-customer-wishlist'
|
|
||||||
import type { Wishlist, WishlistHandlers } from '..'
|
|
||||||
|
|
||||||
// Return wishlist info
|
|
||||||
const getWishlist: WishlistHandlers['getWishlist'] = async ({
|
|
||||||
res,
|
|
||||||
body: { customerToken, includeProducts },
|
|
||||||
config,
|
|
||||||
}) => {
|
|
||||||
let result: { data?: Wishlist } = {}
|
|
||||||
|
|
||||||
if (customerToken) {
|
|
||||||
const customerId =
|
|
||||||
customerToken && (await getCustomerId({ customerToken, config }))
|
|
||||||
|
|
||||||
if (!customerId) {
|
|
||||||
// If the customerToken is invalid, then this request is too
|
|
||||||
return res.status(404).json({
|
|
||||||
data: null,
|
|
||||||
errors: [{ message: 'Wishlist not found' }],
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const { wishlist } = await getCustomerWishlist({
|
|
||||||
variables: { customerId },
|
|
||||||
includeProducts,
|
|
||||||
config,
|
|
||||||
})
|
|
||||||
|
|
||||||
result = { data: wishlist }
|
|
||||||
}
|
|
||||||
|
|
||||||
res.status(200).json({ data: result.data ?? null })
|
|
||||||
}
|
|
||||||
|
|
||||||
export default getWishlist
|
|
@ -1,39 +0,0 @@
|
|||||||
import getCustomerId from '../../endpoints/wishlist/utils/get-customer-id'
|
|
||||||
import getCustomerWishlist, {
|
|
||||||
Wishlist,
|
|
||||||
} from '../../operations/get-customer-wishlist'
|
|
||||||
import type { WishlistHandlers } from '..'
|
|
||||||
|
|
||||||
// Return current wishlist info
|
|
||||||
const removeItem: WishlistHandlers['removeItem'] = async ({
|
|
||||||
res,
|
|
||||||
body: { customerToken, itemId },
|
|
||||||
config,
|
|
||||||
}) => {
|
|
||||||
const customerId =
|
|
||||||
customerToken && (await getCustomerId({ customerToken, config }))
|
|
||||||
const { wishlist } =
|
|
||||||
(customerId &&
|
|
||||||
(await getCustomerWishlist({
|
|
||||||
variables: { customerId },
|
|
||||||
config,
|
|
||||||
}))) ||
|
|
||||||
{}
|
|
||||||
|
|
||||||
if (!wishlist || !itemId) {
|
|
||||||
return res.status(400).json({
|
|
||||||
data: null,
|
|
||||||
errors: [{ message: 'Invalid request' }],
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const result = await config.storeApiFetch<{ data: Wishlist } | null>(
|
|
||||||
`/v3/wishlists/${wishlist.id}/items/${itemId}`,
|
|
||||||
{ method: 'DELETE' }
|
|
||||||
)
|
|
||||||
const data = result?.data ?? null
|
|
||||||
|
|
||||||
res.status(200).json({ data })
|
|
||||||
}
|
|
||||||
|
|
||||||
export default removeItem
|
|
@ -1,104 +0,0 @@
|
|||||||
import isAllowedMethod from '../utils/is-allowed-method'
|
|
||||||
import createApiHandler, {
|
|
||||||
BigcommerceApiHandler,
|
|
||||||
BigcommerceHandler,
|
|
||||||
} from '../utils/create-api-handler'
|
|
||||||
import { BigcommerceApiError } from '../utils/errors'
|
|
||||||
import type {
|
|
||||||
Wishlist,
|
|
||||||
WishlistItem,
|
|
||||||
} from '../operations/get-customer-wishlist'
|
|
||||||
import getWishlist from './handlers/get-wishlist'
|
|
||||||
import addItem from './handlers/add-item'
|
|
||||||
import removeItem from './handlers/remove-item'
|
|
||||||
import type { Product, ProductVariant, Customer } from '@commerce/types'
|
|
||||||
|
|
||||||
export type { Wishlist, WishlistItem }
|
|
||||||
|
|
||||||
export type ItemBody = {
|
|
||||||
productId: Product['id']
|
|
||||||
variantId: ProductVariant['id']
|
|
||||||
}
|
|
||||||
|
|
||||||
export type AddItemBody = { item: ItemBody }
|
|
||||||
|
|
||||||
export type RemoveItemBody = { itemId: Product['id'] }
|
|
||||||
|
|
||||||
export type WishlistBody = {
|
|
||||||
customer_id: Customer['entityId']
|
|
||||||
is_public: number
|
|
||||||
name: string
|
|
||||||
items: any[]
|
|
||||||
}
|
|
||||||
|
|
||||||
export type AddWishlistBody = { wishlist: WishlistBody }
|
|
||||||
|
|
||||||
export type WishlistHandlers = {
|
|
||||||
getWishlist: BigcommerceHandler<
|
|
||||||
Wishlist,
|
|
||||||
{ customerToken?: string; includeProducts?: boolean }
|
|
||||||
>
|
|
||||||
addItem: BigcommerceHandler<
|
|
||||||
Wishlist,
|
|
||||||
{ customerToken?: string } & Partial<AddItemBody>
|
|
||||||
>
|
|
||||||
removeItem: BigcommerceHandler<
|
|
||||||
Wishlist,
|
|
||||||
{ customerToken?: string } & Partial<RemoveItemBody>
|
|
||||||
>
|
|
||||||
}
|
|
||||||
|
|
||||||
const METHODS = ['GET', 'POST', 'DELETE']
|
|
||||||
|
|
||||||
// TODO: a complete implementation should have schema validation for `req.body`
|
|
||||||
const wishlistApi: BigcommerceApiHandler<Wishlist, WishlistHandlers> = async (
|
|
||||||
req,
|
|
||||||
res,
|
|
||||||
config,
|
|
||||||
handlers
|
|
||||||
) => {
|
|
||||||
if (!isAllowedMethod(req, res, METHODS)) return
|
|
||||||
|
|
||||||
const { cookies } = req
|
|
||||||
const customerToken = cookies[config.customerCookie]
|
|
||||||
|
|
||||||
try {
|
|
||||||
// Return current wishlist info
|
|
||||||
if (req.method === 'GET') {
|
|
||||||
const body = {
|
|
||||||
customerToken,
|
|
||||||
includeProducts: req.query.products === '1',
|
|
||||||
}
|
|
||||||
return await handlers['getWishlist']({ req, res, config, body })
|
|
||||||
}
|
|
||||||
|
|
||||||
// Add an item to the wishlist
|
|
||||||
if (req.method === 'POST') {
|
|
||||||
const body = { ...req.body, customerToken }
|
|
||||||
return await handlers['addItem']({ req, res, config, body })
|
|
||||||
}
|
|
||||||
|
|
||||||
// Remove an item from the wishlist
|
|
||||||
if (req.method === 'DELETE') {
|
|
||||||
const body = { ...req.body, customerToken }
|
|
||||||
return await handlers['removeItem']({ req, res, config, body })
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
console.error(error)
|
|
||||||
|
|
||||||
const message =
|
|
||||||
error instanceof BigcommerceApiError
|
|
||||||
? 'An unexpected error ocurred with the Bigcommerce API'
|
|
||||||
: 'An unexpected error ocurred'
|
|
||||||
|
|
||||||
res.status(500).json({ data: null, errors: [{ message }] })
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
export const handlers = {
|
|
||||||
getWishlist,
|
|
||||||
addItem,
|
|
||||||
removeItem,
|
|
||||||
}
|
|
||||||
|
|
||||||
export default createApiHandler(wishlistApi, handlers, {})
|
|
Loading…
x
Reference in New Issue
Block a user