4
0
forked from crowetic/commerce
commerce/framework/swell/common/get-all-pages.ts
2021-04-09 16:57:59 -06:00

39 lines
806 B
TypeScript

import { getConfig, SwellConfig } from '../api'
import { PageEdge } from '../schema'
import { getAllPagesQuery } from '../utils/queries'
type Variables = {
first?: number
}
type ReturnType = {
pages: Page[]
}
export type Page = {
id: string
name: string
url: string
sort_order?: number
body: string
}
const getAllPages = async (options?: {
variables?: Variables
config: SwellConfig
preview?: boolean
}): Promise<ReturnType> => {
let { config, variables = { first: 250 } } = options ?? {}
config = getConfig(config)
const { locale, fetchSwell } = config
const { results } = await fetchSwell('content', 'list', ['pages'])
const pages = results.map(({ slug, ...rest }) => ({
url: `/${locale}/${slug}`,
...rest,
}))
return { pages }
}
export default getAllPages