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 (
-
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 (
<>
;
-}
-
-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.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;