diff --git a/Frontend/app/(admin)/blogs/[slug]/page.tsx b/Frontend/app/(admin)/blogs/[slug]/page.tsx index dd3f7b6..18705e1 100644 --- a/Frontend/app/(admin)/blogs/[slug]/page.tsx +++ b/Frontend/app/(admin)/blogs/[slug]/page.tsx @@ -1,22 +1,9 @@ -import fs from "fs"; -import matter from "gray-matter"; import BlogContent from "@/sections/BlogContent"; -import Link from "next/link"; -import Image from "next/image"; -import xButton from "@/images/icon-x.svg"; import getPostMetadata from "@/utils/getPostMetaData"; import { headers } from "next/headers"; import React from "react"; -import Icon from "@/components/icon"; import Spacer from "@/components/Utilities/Spacer"; - -const getPostContent = (slug: string) => { - const folder = "blogs/"; - const file = `${folder}${slug}.md`; - const content = fs.readFileSync(file, "utf8"); - const matterResult = matter(content); - return matterResult; -}; +import pb from "@/lib/pocketbase"; export async function generateMetadata({ params, @@ -26,11 +13,15 @@ export async function generateMetadata({ const { slug } = params; const headersList = headers(); const siteURL = headersList.get("host"); - const post = getPostContent(slug); + pb.autoCancellation(false); + const post = await pb.collection("blog").getFirstListItem(`slug="${slug}"`, { + requestKey: "metaData", + }); + pb.autoCancellation(true); return { - title: `${post.data.title}`, - description: `${post.data.subtitle}`, + title: `${post.title}`, + description: `${post.subtitle}`, alternates: { canonical: `https://${siteURL}/blogs/${slug}`, }, @@ -38,16 +29,19 @@ export async function generateMetadata({ } export const generateStaticParams = async () => { - const posts = getPostMetadata(); + const posts = await getPostMetadata(); return posts.map((post) => ({ slug: post.slug, + id: post.id, })); }; -const PostPage = (props: any) => { - const slug = props.params.slug; - const post = getPostContent(slug); - const showModal = props.searchParams?.modal; +const PostPage = async (props: any) => { + const post = await pb + .collection("blog") + .getFirstListItem(`slug="${props.params.slug}"`, { + requestKey: "post", + }); return (
diff --git a/Frontend/app/(admin)/blogs/page.tsx b/Frontend/app/(admin)/blogs/page.tsx index caf09c0..6550940 100644 --- a/Frontend/app/(admin)/blogs/page.tsx +++ b/Frontend/app/(admin)/blogs/page.tsx @@ -4,12 +4,12 @@ import getPostMetadata from "@/utils/getPostMetaData"; import React from "react"; import Background from "@/components/Utilities/Background"; -export default function BlogsPage() { - const postMetadata = getPostMetadata(); +export default async function BlogsPage() { + const postMetadata = await getPostMetadata(); const postPreviews = postMetadata .sort((a, b) => new Date(b.date).getTime() - new Date(a.date).getTime()) - .map((post) => ); + .map((post) => ); return (
-
+
{postPreviews}
diff --git a/Frontend/app/(admin)/pricing/actions.ts b/Frontend/app/(admin)/pricing/actions.ts index bbf07f2..f810a2b 100644 --- a/Frontend/app/(admin)/pricing/actions.ts +++ b/Frontend/app/(admin)/pricing/actions.ts @@ -5,7 +5,6 @@ import pb from "@/lib/pocketbase"; import { getAuthCookie } from "@/app/(auth)/actions"; export async function apiPrices() { - console.log('prices') try { const pocketbaseUrl = process.env.NEXT_PUBLIC_POCKETBASE_URL_STRING; if (!pocketbaseUrl) { diff --git a/Frontend/components/BlogCard.tsx b/Frontend/components/BlogCard.tsx index 692d562..9aa60e5 100644 --- a/Frontend/components/BlogCard.tsx +++ b/Frontend/components/BlogCard.tsx @@ -4,7 +4,17 @@ import { PostMetadata } from "@/types"; import Image from "next/image"; import Link from "next/link"; -function BlogCard({ title, slug, subtitle, image }: PostMetadata) { +function BlogCard({ + title, + slug, + subtitle, + imageUrl, +}: { + title: string; + slug: string; + subtitle: string; + imageUrl: string; +}) { return ( <>
{title}; -} - -function BlogContent({ post }: BlogContentProps) { +function BlogContent({ post }: { post: any }) { return ( <> -

- {post.data.title} -

+

{post.title}

{/* Not sure if name is required */} -

- {post.data.author ?? ""} -

+

{post.author ?? ""}

| -

{post.data.date}

+

+ {new Date(post.date).toLocaleDateString()} +

post-image
- {post.content} +
); diff --git a/Frontend/utils/getPostMetaData.ts b/Frontend/utils/getPostMetaData.ts index 7c9f20c..64df076 100644 --- a/Frontend/utils/getPostMetaData.ts +++ b/Frontend/utils/getPostMetaData.ts @@ -2,27 +2,31 @@ import { PostMetadata } from "@/types"; import fs from "fs"; import matter from "gray-matter"; import path from 'path' +import pb from '@/lib/pocketbase'; -const getPostMetadata = (): PostMetadata[] => { - const folder = path.join(process.cwd(), '/blogs'); - const files = fs.readdirSync(folder); - const markdownPosts = files.filter((file) => file.endsWith(".md")); +const getPostMetadata = async () => { + // const folder = path.join(process.cwd(), '/blogs'); + // const files = fs.readdirSync(folder); + // const markdownPosts = files.filter((file) => file.endsWith(".md")); // Get gray-matter data from each file. - const posts = markdownPosts.map((fileName) => { - const fileContents = fs.readFileSync(`blogs/${fileName}`, "utf8"); - const matterResult = matter(fileContents); - return { - title: matterResult.data.title, - date: matterResult.data.date, - author: matterResult.data.author, - subtitle: matterResult.data.subtitle, - slug: fileName.replace(".md", ""), - image: matterResult.data.image, - }; - }); + // const posts = markdownPosts.map((fileName) => { + // const fileContents = fs.readFileSync(`blogs/${fileName}`, "utf8"); + // const matterResult = matter(fileContents); + // return { + // title: matterResult.data.title, + // date: matterResult.data.date, + // author: matterResult.data.author, + // subtitle: matterResult.data.subtitle, + // slug: fileName.replace(".md", ""), + // image: matterResult.data.image, + // }; + // }); - return posts; + + + + return (await (pb.collection("blog").getList(1, 50))).items; }; export default getPostMetadata;