commerce/lib/spree/utils/normalizations/normalize-page.ts
2024-05-21 20:00:11 +05:00

43 lines
1.2 KiB
TypeScript

import { Page } from '@commerce/types/page';
import type { PageAttr } from '@spree/storefront-api-v2-sdk/types/interfaces/Page';
import { SpreeSdkResponse } from '../../types';
const normalizePage = (
_spreeSuccessResponse: SpreeSdkResponse,
spreePage: PageAttr,
commerceLocales: string[]
): Page => {
// If the locale returned by Spree is not available, search
// for a similar one.
const spreeLocale = spreePage.attributes.locale;
let usedCommerceLocale: string;
if (commerceLocales.includes(spreeLocale)) {
usedCommerceLocale = spreeLocale;
} else {
const genericSpreeLocale = spreeLocale.split('-')[0];
const foundExactGenericLocale = commerceLocales.includes(genericSpreeLocale);
if (foundExactGenericLocale) {
usedCommerceLocale = genericSpreeLocale;
} else {
const foundSimilarLocale = commerceLocales.find((locale) => {
return locale.split('-')[0] === genericSpreeLocale;
});
usedCommerceLocale = foundSimilarLocale || spreeLocale;
}
}
return {
id: spreePage.id,
name: spreePage.attributes.title,
url: `/${usedCommerceLocale}/${spreePage.attributes.slug}`,
body: spreePage.attributes.content
};
};
export default normalizePage;