1
0
Fork 0
freesewing/sites/org/components/sanity/utils.mjs

44 lines
1.2 KiB
JavaScript
Raw Normal View History

import { createClient } from '@sanity/client'
2023-06-20 19:27:29 +02:00
import { siteConfig } from 'site/site.config.mjs'
let sanityClient
2023-06-22 16:27:08 -05:00
const cache = {}
2023-06-22 16:43:31 -05:00
export const sanityLoader = async ({ query, language, type, slug, order, filters = '' }) => {
sanityClient =
sanityClient ||
createClient({
projectId: siteConfig.sanity.project,
dataset: siteConfig.sanity.dataset,
apiVersion: siteConfig.sanity.apiVersion,
useCdn: true,
})
if (!query) {
query = `*[_type == "${type}${language}"`
if (slug) query += ` && slug.current == "${slug}"`
query += ']'
}
if (order) {
query += ` | order(${order})`
}
2023-06-22 16:43:31 -05:00
query += filters
2023-06-22 16:27:08 -05:00
if (cache[query]) return cache[query]
const result = await sanityClient.fetch(query)
cache[query] = result
return result
}
export const sanityImage = (image, dataset = 'site-content') => {
const [, assetName, origSize, format] = image.asset._ref.split('-')
return `https://cdn.sanity.io/images/${siteConfig.sanity.project}/${dataset}/${assetName}-${origSize}.${format}`
}
2023-06-22 16:27:08 -05:00
2023-06-24 13:56:22 -05:00
export const sanitySiteImage = (image) => sanityImage(image, 'site-content')
export const sanityUserImage = (image) => sanityImage(image, 'user-content')
2023-06-22 16:27:08 -05:00
export const numPerPage = 12