import type { SiteDocument } from '../../server/utils/site-schema' export async function useSiteDocument() { const route = useRoute() const isPreview = computed(() => route.query.preview === 'draft') const endpoint = computed(() => isPreview.value ? '/api/admin/site' : '/api/public/site') const headers = import.meta.server && isPreview.value ? useRequestHeaders(['cookie']) : undefined useHead(() => isPreview.value ? { meta: [{ name: 'robots', content: 'noindex, nofollow' }] } : {}) const { data: response, error } = await useFetch<{ data: SiteDocument }>(endpoint, { headers }) if (error.value) { if (isPreview.value && error.value.statusCode === 401) { throw createError({ statusCode: 401, statusMessage: '预览草稿前请先登录后台' }) } throw error.value } return { site: computed(() => response.value!.data), isPreview, } } export function useAbsoluteUrl() { const config = useRuntimeConfig() const base = String(config.public.siteUrl).replace(/\/$/, '') return (path?: string | null) => { if (!path) return base if (/^https?:\/\//i.test(path)) return path return `${base}${path.startsWith('/') ? path : `/${path}`}` } }