commerce/lib/utils.ts
2024-03-28 10:53:35 +07:00

63 lines
2.0 KiB
TypeScript

import { ReadonlyURLSearchParams } from 'next/navigation';
import { DiscountMetaobject, Field } from './shopify/types';
export const createUrl = (pathname: string, params: URLSearchParams | ReadonlyURLSearchParams) => {
const paramsString = params.toString();
const queryString = `${paramsString.length ? '?' : ''}${paramsString}`;
return `${pathname}${queryString}`;
};
export const ensureStartsWith = (stringToCheck: string, startsWith: string) =>
stringToCheck.startsWith(startsWith) ? stringToCheck : `${startsWith}${stringToCheck}`;
export const validateEnvironmentVariables = () => {
const requiredEnvironmentVariables = ['SHOPIFY_STORE_DOMAIN', 'SHOPIFY_STOREFRONT_ACCESS_TOKEN'];
const missingEnvironmentVariables = [] as string[];
requiredEnvironmentVariables.forEach((envVar) => {
if (!process.env[envVar]) {
missingEnvironmentVariables.push(envVar);
}
});
if (missingEnvironmentVariables.length) {
throw new Error(
`The following environment variables are missing. Your site will not work without them. Read more: https://vercel.com/docs/integrations/shopify#configure-environment-variables\n\n${missingEnvironmentVariables.join(
'\n'
)}\n`
);
}
if (
process.env.SHOPIFY_STORE_DOMAIN?.includes('[') ||
process.env.SHOPIFY_STORE_DOMAIN?.includes(']')
) {
throw new Error(
'Your `SHOPIFY_STORE_DOMAIN` environment variable includes brackets (ie. `[` and / or `]`). Your site will not work with them there. Please remove them.'
);
}
};
export const formatDiscounts = (data: DiscountMetaobject[]) => {
const formattedData = data.map((item) => {
const fields = item.fields.reduce(
(acc, field: Field) => {
acc[field.key as string] = field.value;
return acc;
},
{} as Record<string, any>
);
return {
name: fields.name,
code: fields.discount_code,
discount: {
amount: parseFloat(fields.amount) / 100,
minimumSpent: parseFloat(fields.minimum_spent)
}
};
});
return formattedData;
};