import { SiteLocale, type SeoField } from "~/generatedTypes";
export default defineNuxtComponent({
async setup() {
const { currentRoute } = useRouter();
const { data, error } = await useAsyncData(currentRoute.value.fullPath, async () => {
const lang = isSiteLocale(currentRoute.value.params.lang as SiteLocale)
? currentRoute.value.params.lang
: SiteLocale.En;
const langPrefix = lang === SiteLocale.En ? "" : `/${lang}`;
const langCheck = lang === SiteLocale.En ? SiteLocale.En : lang;
const cleanPath = currentRoute.value.fullPath.replace(new RegExp(`^${langPrefix}`), "");
const apiRoute = `/api${langPrefix}/route${cleanPath.replace(/\/$/, "").replace(/\?.*$/, "")}`;
let finalApiRoute = "";
if (langCheck !== SiteLocale.En) {
if (
currentRoute.value.fullPath === `/${langCheck}/` ||
!currentRoute.value.fullPath.substring(1 + langCheck.length)
) {
finalApiRoute = `/api/${langCheck}/frontpage`;
} else {
finalApiRoute = apiRoute;
}
} else {
finalApiRoute = `/api/router/${lang}/route${currentRoute.value.fullPath.replace(`/${lang}/`, "").replace(/\?.*$/, "")}`;
}
const fetchedData = await $fetch(finalApiRoute);
if (fetchedData) {
return {
...fetchedData,
lang,
};
}
return null;
});
const headerState = useState("headerState", () => true);
if ((data.value && data.value.pageData && data.value.pageData.seo) || data.value.fallback) {
const seo = data.value.pageData.seo as SeoField;
const globalSeo = data.value.globalSeo;
useSetHead(seo, data.value.fallback, globalSeo, data.value.lang as SiteLocale);
} else {
const globalSeo = data.value.globalSeo;
useSetHead(null, data.value.fallback, globalSeo, data.value.lang as SiteLocale);
}
return { data, headerState, resolvePageView };
},
});
import { SiteLocale, type SeoField } from "~/generatedTypes";
export default defineNuxtComponent({
async setup() {
const { currentRoute } = useRouter();
const { data, error } = await useAsyncData(currentRoute.value.fullPath, async () => {
const lang = isSiteLocale(currentRoute.value.params.lang as SiteLocale)
? currentRoute.value.params.lang
: SiteLocale.En;
const langPrefix = lang === SiteLocale.En ? "" : `/${lang}`;
const langCheck = lang === SiteLocale.En ? SiteLocale.En : lang;
const cleanPath = currentRoute.value.fullPath.replace(new RegExp(`^${langPrefix}`), "");
const apiRoute = `/api${langPrefix}/route${cleanPath.replace(/\/$/, "").replace(/\?.*$/, "")}`;
let finalApiRoute = "";
if (langCheck !== SiteLocale.En) {
if (
currentRoute.value.fullPath === `/${langCheck}/` ||
!currentRoute.value.fullPath.substring(1 + langCheck.length)
) {
finalApiRoute = `/api/${langCheck}/frontpage`;
} else {
finalApiRoute = apiRoute;
}
} else {
finalApiRoute = `/api/router/${lang}/route${currentRoute.value.fullPath.replace(`/${lang}/`, "").replace(/\?.*$/, "")}`;
}
const fetchedData = await $fetch(finalApiRoute);
if (fetchedData) {
return {
...fetchedData,
lang,
};
}
return null;
});
const headerState = useState("headerState", () => true);
if ((data.value && data.value.pageData && data.value.pageData.seo) || data.value.fallback) {
const seo = data.value.pageData.seo as SeoField;
const globalSeo = data.value.globalSeo;
useSetHead(seo, data.value.fallback, globalSeo, data.value.lang as SiteLocale);
} else {
const globalSeo = data.value.globalSeo;
useSetHead(null, data.value.fallback, globalSeo, data.value.lang as SiteLocale);
}
return { data, headerState, resolvePageView };
},
});