import AppLayout from "components/AppLayout"; import Chip from "components/Chip"; import ThumbnailHeader from "components/Content/ThumbnailHeader"; import HorizontalLine from "components/HorizontalLine"; import LanguageSwitcher from "components/LanguageSwitcher"; import Markdawn from "components/Markdown/Markdawn"; import TOC from "components/Markdown/TOC"; import ReturnButton, { ReturnButtonType, } from "components/PanelComponents/ReturnButton"; import ContentPanel from "components/Panels/ContentPanel"; import SubPanel from "components/Panels/SubPanel"; import RecorderChip from "components/RecorderChip"; import ToolTip from "components/ToolTip"; import { getPost, getPostLanguages, getPostsSlugs } from "graphql/operations"; import { GetPostQuery, StrapiImage } from "graphql/operations-types"; import { GetStaticPaths, GetStaticProps } from "next"; import { useRouter } from "next/router"; import { AppStaticProps, getAppStaticProps } from "queries/getAppStaticProps"; import { getStatusDescription, prettySlug } from "queries/helpers"; interface PostProps extends AppStaticProps { post: GetPostQuery["posts"]["data"][number]["attributes"]; postId: GetPostQuery["posts"]["data"][number]["id"]; locales: string[]; } export default function LibrarySlug(props: PostProps): JSX.Element { const { post, locales, langui } = props; const router = useRouter(); const thumbnail: StrapiImage | undefined = post.translations.length > 0 && post.translations[0].thumbnail.data ? post.translations[0].thumbnail.data.attributes : post.thumbnail.data ? post.thumbnail.data.attributes : undefined; const subPanel = ( {post.translations.length > 0 && ( {langui.status}: {post.translations[0].status} )} {post.authors.data.length > 0 && ( {"Authors"}: {post.authors.data.map((author) => ( ))} )} {post.translations.length > 0 && post.translations[0].body && ( )} ); const contentPanel = ( 0 ? post.translations[0].title : prettySlug(post.slug) } description={ post.translations.length > 0 ? post.translations[0].excerpt : undefined } langui={langui} categories={post.categories} /> {locales.includes(router.locale || "en") ? ( ) : ( )} ); return ( 0 ? post.translations[0].title : prettySlug(post.slug) } contentPanel={contentPanel} subPanel={subPanel} thumbnail={thumbnail} {...props} /> ); } export const getStaticProps: GetStaticProps = async (context) => { const slug = context.params?.slug?.toString() || ""; const post = ( await getPost({ slug: slug, language_code: context.locale || "en", }) ).posts.data[0]; const props: PostProps = { ...(await getAppStaticProps(context)), post: post.attributes, postId: post.id, locales: ( await getPostLanguages({ slug: slug }) ).posts.data[0].attributes.translations.map((translation) => { return translation.language.data.attributes.code; }), }; return { props: props, }; }; export const getStaticPaths: GetStaticPaths = async (context) => { type Path = { params: { slug: string; }; locale: string; }; const data = await getPostsSlugs({}); const paths: Path[] = []; data.posts.data.map((item) => { context.locales?.map((local) => { paths.push({ params: { slug: item.attributes.slug }, locale: local }); }); }); return { paths, fallback: false, }; };
{langui.status}:
{"Authors"}: