mirror of
https://github.com/vercel/commerce.git
synced 2025-05-18 23:46:58 +00:00
43 lines
1.2 KiB
TypeScript
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
|