mirror of
https://github.com/vercel/commerce.git
synced 2025-07-05 12:41:21 +00:00
Show placeholder message for /chechout and adjust api fetcher type
This commit is contained in:
parent
3b3a181dac
commit
17f8d497b8
44
framework/spree/api/endpoints/checkout/checkout.ts
Normal file
44
framework/spree/api/endpoints/checkout/checkout.ts
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
import type { CheckoutEndpoint } from '.'
|
||||||
|
|
||||||
|
const checkout: CheckoutEndpoint['handlers']['checkout'] = async ({
|
||||||
|
req: request,
|
||||||
|
res: response,
|
||||||
|
config,
|
||||||
|
}) => {
|
||||||
|
try {
|
||||||
|
const html = `
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
<title>Checkout</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div style='margin: 10rem auto; text-align: center; font-family: SansSerif, "Segoe UI", Helvetica; color: #888;'>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" style='height: 60px; width: 60px;' fill="none" viewBox="0 0 24 24" stroke="currentColor">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z" />
|
||||||
|
</svg>
|
||||||
|
<h1>Checkout not yet implemented :(</h1>
|
||||||
|
<p>
|
||||||
|
See <a href='https://github.com/vercel/commerce/issues/64' target='_blank'>#64</a>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
`
|
||||||
|
|
||||||
|
response.status(200)
|
||||||
|
response.setHeader('Content-Type', 'text/html')
|
||||||
|
response.write(html)
|
||||||
|
response.end()
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error)
|
||||||
|
|
||||||
|
const message = 'An unexpected error ocurred'
|
||||||
|
|
||||||
|
response.status(500).json({ data: null, errors: [{ message }] })
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export default checkout
|
@ -1 +1,23 @@
|
|||||||
export default function noopApi(...args: any[]): void {}
|
import { createEndpoint } from '@commerce/api'
|
||||||
|
import type { CommerceAPI } from '@commerce/api'
|
||||||
|
import type { GetAPISchema } from '@commerce/api'
|
||||||
|
import checkoutEndpoint from '@commerce/api/endpoints/checkout'
|
||||||
|
import type { CheckoutSchema } from '@commerce/types/checkout'
|
||||||
|
import type { SpreeApiProvider } from '@framework/api'
|
||||||
|
import checkout from './checkout'
|
||||||
|
|
||||||
|
export type CheckoutAPI = GetAPISchema<
|
||||||
|
CommerceAPI<SpreeApiProvider>,
|
||||||
|
CheckoutSchema
|
||||||
|
>
|
||||||
|
|
||||||
|
export type CheckoutEndpoint = CheckoutAPI['endpoint']
|
||||||
|
|
||||||
|
export const handlers: CheckoutEndpoint['handlers'] = { checkout }
|
||||||
|
|
||||||
|
const checkoutApi = createEndpoint<CheckoutAPI>({
|
||||||
|
handler: checkoutEndpoint,
|
||||||
|
handlers,
|
||||||
|
})
|
||||||
|
|
||||||
|
export default checkoutApi
|
||||||
|
@ -10,7 +10,9 @@ import getAllProductPaths from './operations/get-all-product-paths'
|
|||||||
import getAllProducts from './operations/get-all-products'
|
import getAllProducts from './operations/get-all-products'
|
||||||
import getProduct from './operations/get-product'
|
import getProduct from './operations/get-product'
|
||||||
|
|
||||||
export interface SpreeApiConfig extends CommerceAPIConfig {}
|
export interface SpreeApiConfig extends CommerceAPIConfig {
|
||||||
|
fetch: any // Using any type, because CommerceAPIConfig['fetch'] cannot be extended from Variables = any to SpreeSdkVariables
|
||||||
|
}
|
||||||
|
|
||||||
const config: SpreeApiConfig = {
|
const config: SpreeApiConfig = {
|
||||||
commerceUrl: '',
|
commerceUrl: '',
|
||||||
|
@ -57,7 +57,9 @@ export default function getAllProductsOperation({
|
|||||||
|
|
||||||
const {
|
const {
|
||||||
data: { data: spreeSuccessResponse },
|
data: { data: spreeSuccessResponse },
|
||||||
} = await apiFetch<{ data: IProducts }>('__UNUSED__', { variables })
|
} = await apiFetch<{ data: IProducts }, SpreeSdkVariables>('__UNUSED__', {
|
||||||
|
variables,
|
||||||
|
})
|
||||||
|
|
||||||
const normalizedProducts: Product[] = spreeSuccessResponse.data.map(
|
const normalizedProducts: Product[] = spreeSuccessResponse.data.map(
|
||||||
(spreeProduct) => normalizeProduct(spreeSuccessResponse, spreeProduct)
|
(spreeProduct) => normalizeProduct(spreeSuccessResponse, spreeProduct)
|
||||||
|
@ -63,7 +63,9 @@ export default function getProductOperation({
|
|||||||
|
|
||||||
const {
|
const {
|
||||||
data: { data: spreeSuccessResponse },
|
data: { data: spreeSuccessResponse },
|
||||||
} = await apiFetch<{ data: IProduct }>('__UNUSED__', { variables })
|
} = await apiFetch<{ data: IProduct }, SpreeSdkVariables>('__UNUSED__', {
|
||||||
|
variables,
|
||||||
|
})
|
||||||
|
|
||||||
return {
|
return {
|
||||||
product: normalizeProduct(
|
product: normalizeProduct(
|
||||||
|
@ -86,9 +86,12 @@ export default function getSiteInfoOperation({
|
|||||||
|
|
||||||
const {
|
const {
|
||||||
data: { data: spreeCategoriesSuccessResponse },
|
data: { data: spreeCategoriesSuccessResponse },
|
||||||
} = await apiFetch<{
|
} = await apiFetch<
|
||||||
|
{
|
||||||
data: ITaxons
|
data: ITaxons
|
||||||
}>('__UNUSED__', {
|
},
|
||||||
|
SpreeSdkVariables
|
||||||
|
>('__UNUSED__', {
|
||||||
variables: createVariables(
|
variables: createVariables(
|
||||||
requireConfigValue('spreeCategoriesTaxonomyId') as string
|
requireConfigValue('spreeCategoriesTaxonomyId') as string
|
||||||
),
|
),
|
||||||
@ -96,9 +99,12 @@ export default function getSiteInfoOperation({
|
|||||||
|
|
||||||
const {
|
const {
|
||||||
data: { data: spreeBrandsSuccessResponse },
|
data: { data: spreeBrandsSuccessResponse },
|
||||||
} = await apiFetch<{
|
} = await apiFetch<
|
||||||
|
{
|
||||||
data: ITaxons
|
data: ITaxons
|
||||||
}>('__UNUSED__', {
|
},
|
||||||
|
SpreeSdkVariables
|
||||||
|
>('__UNUSED__', {
|
||||||
variables: createVariables(
|
variables: createVariables(
|
||||||
requireConfigValue('spreeBrandsTaxonomyId') as string
|
requireConfigValue('spreeBrandsTaxonomyId') as string
|
||||||
),
|
),
|
||||||
|
@ -5,4 +5,12 @@ module.exports = {
|
|||||||
images: {
|
images: {
|
||||||
domains: [process.env.NEXT_PUBLIC_SPREE_ALLOWED_IMAGE_DOMAIN],
|
domains: [process.env.NEXT_PUBLIC_SPREE_ALLOWED_IMAGE_DOMAIN],
|
||||||
},
|
},
|
||||||
|
rewrites() {
|
||||||
|
return [
|
||||||
|
{
|
||||||
|
source: '/checkout',
|
||||||
|
destination: '/api/checkout',
|
||||||
|
},
|
||||||
|
]
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user