memento-dev/app/pages/docs/+data.ts
GauthierWebDev 6695c7c023
All checks were successful
Update Memento Dev on VPS / deploy (push) Successful in 49s
feat: Add useEffect and NavigationSubItem component
2025-04-17 19:53:58 +02:00

42 lines
1.2 KiB
TypeScript

import type { PageContext } from "vike/types";
import { snippetsService } from "@/services/SnippetsService";
import { findNavigationLink } from "@/lib/navigation";
import { docsService } from "@/services/DocsService";
import { readingTime } from "reading-time-estimator";
import { useConfig } from "vike-react/useConfig";
import buildTitle from "@/pages/buildTitle";
import { render } from "vike/abort";
export type Data = Awaited<ReturnType<typeof data>>;
export async function data(pageContext: PageContext) {
const config = useConfig();
const { key } = pageContext.routeParams;
const doc = await docsService.getDoc("docs", key);
const link = findNavigationLink("docs", key);
if (!doc) {
throw render(404);
}
const readingTimeObject = readingTime(doc.content, 300, "fr");
config({
title: buildTitle(doc.title),
description: doc.description,
image: link?.og?.image || "notfound",
});
docsService.transform(doc);
const snippets = Array.from(doc.snippets).map((snippetPath) => ({
path: snippetPath,
content: snippetsService.getFromCache(snippetPath),
}));
return { doc, estimatedReadingTime: readingTimeObject.text, snippets };
}