2022-01-14 20:44:48 -05:00

43 lines
1.2 KiB
TypeScript

import { Page } from '@vercel/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