import { IPage } from "~~/composables/pages"; export default defineNuxtRouteMiddleware(async (to) => { const { setCurrentPage } = useCurrentPage(); const { fetchPages } = usePages(); const pathParts = to.path.split('/').filter(p => p !== ''); pathParts.unshift(''); const filters = pathParts.reduce((total, part) => { return { id: { ne: null }, slug: { eq: part === '' ? null : part }, parent: total, }; }, {}); const [{ data, error }] = await Promise.all([ useAsyncGql({ operation: 'pages', variables: { filters }, }), fetchPages(), ]); if (error.value) { console.error('Error getting pages!'); console.error(error.value); return; } const newPage = (data.value?.pages?.data[0] as IPage) || null; if (!newPage) { setResponseStatus(404) return; } setCurrentPage(newPage); });