2022-07-23 20:52:23 +00:00
|
|
|
<script lang="ts" context="module">
|
|
|
|
export const load: Load = async ({ params }) => {
|
|
|
|
const postSlug = params.slug;
|
2022-07-23 22:35:23 +00:00
|
|
|
const post = await readPost(postSlug);
|
|
|
|
if (!post) {
|
2022-07-23 22:04:56 +00:00
|
|
|
return {
|
2022-07-23 22:35:23 +00:00
|
|
|
status: 404,
|
|
|
|
error: new Error('Post not found')
|
2022-07-23 22:04:56 +00:00
|
|
|
};
|
2022-07-23 22:35:23 +00:00
|
|
|
}
|
2022-07-25 17:11:32 +00:00
|
|
|
const newHtml = await processPostHtml(post.html ?? '');
|
|
|
|
post.html = newHtml;
|
2022-07-23 23:08:24 +00:00
|
|
|
const prevPost = await browsePrevPost(post);
|
|
|
|
const nextPost = await browseNextPost(post);
|
2022-07-23 22:35:23 +00:00
|
|
|
const relatedPost = await browseRelatedPost(post.primary_tag?.slug, post.id);
|
|
|
|
return {
|
|
|
|
props: {
|
|
|
|
post: post,
|
|
|
|
prevPost: prevPost,
|
|
|
|
nextPost: nextPost,
|
|
|
|
relatedPost: relatedPost
|
|
|
|
}
|
|
|
|
};
|
2022-07-23 20:52:23 +00:00
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<script lang="ts">
|
|
|
|
import dayjs from 'dayjs';
|
|
|
|
|
|
|
|
import Hero from '@damillora/plachta/components/Hero/Hero.svelte';
|
|
|
|
import PostHeader from '@damillora/plachta/components/Post/PostHeader.svelte';
|
|
|
|
import Post from '@damillora/plachta/components/PageTypes/Post.svelte';
|
|
|
|
import PostMain from '@damillora/plachta/components/Post/PostMain.svelte';
|
|
|
|
import PostNavigator from '@damillora/plachta/components/Post/PostNavigator.svelte';
|
|
|
|
import Container from '@damillora/plachta/components/Container/Container.svelte';
|
|
|
|
import PostRelated from '@damillora/plachta/components/Post/PostRelated.svelte';
|
|
|
|
import PostCard from '@damillora/plachta/components/PostCard/PostCard.svelte';
|
2022-07-23 22:50:08 +00:00
|
|
|
import GhostStyle from '@damillora/plachta/components/Base/GhostStyle.svelte';
|
2022-07-25 17:11:32 +00:00
|
|
|
import { processPostHtml } from '$lib/content/postProcessor';
|
2022-07-23 22:50:08 +00:00
|
|
|
|
2022-07-23 20:52:23 +00:00
|
|
|
import type { Load } from '@sveltejs/kit';
|
2022-07-23 22:35:23 +00:00
|
|
|
import {
|
|
|
|
browseNextPost,
|
|
|
|
browsePrevPost,
|
|
|
|
browseRelatedPost,
|
|
|
|
readPost
|
|
|
|
} from '$lib/content/contentApi';
|
2022-07-23 20:52:23 +00:00
|
|
|
import { browser } from '$app/env';
|
2022-07-23 22:04:56 +00:00
|
|
|
import PostSeo from '$lib/components/SEO/PostSEO.svelte';
|
2022-07-23 22:35:23 +00:00
|
|
|
import { onMount } from 'svelte';
|
2022-07-23 23:21:11 +00:00
|
|
|
import { afterNavigate } from '$app/navigation';
|
2022-07-25 17:11:32 +00:00
|
|
|
import ResponsiveHero from '$lib/components/ResponsiveHero.svelte';
|
2022-07-23 20:52:23 +00:00
|
|
|
|
|
|
|
export let post: any;
|
2022-07-23 22:35:23 +00:00
|
|
|
export let prevPost: any;
|
|
|
|
export let nextPost: any;
|
|
|
|
export let relatedPost: any[];
|
2022-07-23 20:52:23 +00:00
|
|
|
</script>
|
|
|
|
|
|
|
|
<svelte:head>
|
|
|
|
<title>{post.title}</title>
|
|
|
|
</svelte:head>
|
|
|
|
|
2022-07-23 22:04:56 +00:00
|
|
|
<PostSeo {post} />
|
2022-07-25 17:11:32 +00:00
|
|
|
|
|
|
|
<ResponsiveHero background={post.feature_image} />
|
2022-07-23 20:52:23 +00:00
|
|
|
|
|
|
|
<Container>
|
|
|
|
<Post>
|
|
|
|
<PostHeader
|
|
|
|
title={post.title}
|
|
|
|
authors={post.authors}
|
|
|
|
primary_tag={post.primary_tag}
|
|
|
|
date={dayjs(post.published_at).format('DD MMM YYYY')}
|
|
|
|
reading_time={`${post.reading_time} min read`}
|
|
|
|
/>
|
|
|
|
<PostMain>
|
2022-07-23 22:50:08 +00:00
|
|
|
<GhostStyle>
|
|
|
|
{@html post.html}
|
|
|
|
</GhostStyle>
|
2022-07-23 20:52:23 +00:00
|
|
|
<svelte:fragment slot="comments" />
|
|
|
|
</PostMain>
|
2022-07-23 22:35:23 +00:00
|
|
|
<PostNavigator prev_post={prevPost} next_post={nextPost} />
|
2022-07-23 20:52:23 +00:00
|
|
|
</Post>
|
|
|
|
|
2022-07-23 22:50:08 +00:00
|
|
|
<PostRelated
|
|
|
|
name={post.primary_tag.name}
|
|
|
|
url={post.primary_tag.utl}
|
|
|
|
accent_color={post.primary_tag.accent_color}
|
|
|
|
>
|
2022-07-23 22:35:23 +00:00
|
|
|
{#each relatedPost as post}
|
|
|
|
<PostCard
|
|
|
|
title={post.title}
|
|
|
|
authors={post.authors}
|
|
|
|
primary_tag={post.primary_tag}
|
|
|
|
date={dayjs(post.published_at).format('DD MMM YYYY')}
|
|
|
|
reading_time={`${post.reading_time} min read`}
|
|
|
|
excerpt={post.excerpt}
|
|
|
|
feature_image={post.feature_image ?? '/images/default-feature.jpg'}
|
|
|
|
url={post.url}
|
|
|
|
/>
|
|
|
|
{/each}
|
2022-07-23 20:52:23 +00:00
|
|
|
</PostRelated>
|
|
|
|
</Container>
|