mirror of
https://github.com/vercel/commerce.git
synced 2025-07-30 13:41:22 +00:00
Changes
This commit is contained in:
47
lib/bigcommerce/index.tsx
Normal file
47
lib/bigcommerce/index.tsx
Normal file
@@ -0,0 +1,47 @@
|
||||
import {
|
||||
CommerceProvider as CoreCommerceProvider,
|
||||
Connector,
|
||||
useCommerce as useCoreCommerce,
|
||||
} from 'lib/commerce';
|
||||
|
||||
async function getText(res: Response) {
|
||||
try {
|
||||
return (await res.text()) || res.statusText;
|
||||
} catch (error) {
|
||||
return res.statusText;
|
||||
}
|
||||
}
|
||||
|
||||
async function getError(res: Response) {
|
||||
if (res.headers.get('Content-Type')?.includes('application/json')) {
|
||||
const data = await res.json();
|
||||
return data.errors[0];
|
||||
}
|
||||
return { message: await getText(res) };
|
||||
}
|
||||
|
||||
async function fetcher(url: string, query: string) {
|
||||
const res = await fetch(url);
|
||||
|
||||
if (res.ok) {
|
||||
return res.json();
|
||||
}
|
||||
|
||||
throw await getError(res);
|
||||
}
|
||||
|
||||
export const bigcommerce: Connector = {
|
||||
locale: 'en-us',
|
||||
fetcher,
|
||||
};
|
||||
|
||||
// TODO: The connector should be extendable when a developer is using it
|
||||
export function CommerceProvider({ children }) {
|
||||
return (
|
||||
<CoreCommerceProvider connector={bigcommerce}>
|
||||
{children}
|
||||
</CoreCommerceProvider>
|
||||
);
|
||||
}
|
||||
|
||||
export const useCommerce = () => useCoreCommerce();
|
Reference in New Issue
Block a user