summaryrefslogtreecommitdiff
path: root/src/pages/micro
diff options
context:
space:
mode:
authorDawid Rycerz <dawid@rycerz.xyz>2025-07-03 13:46:07 +0300
committerDawid Rycerz <dawid@rycerz.xyz>2025-07-03 13:46:07 +0300
commitf100d259d2ffebe61fef56ea3964f6d534d598c8 (patch)
tree09d06511506da9c35585740d56598eb542fac079 /src/pages/micro
parent1e5f5a953588cefa75396454c9aed0a79552db14 (diff)
Initial pleroma pull support
Diffstat (limited to 'src/pages/micro')
-rw-r--r--src/pages/micro/[...page].astro23
-rw-r--r--src/pages/micro/[...slug].astro18
-rw-r--r--src/pages/micro/rss.xml.ts22
3 files changed, 45 insertions, 18 deletions
diff --git a/src/pages/micro/[...page].astro b/src/pages/micro/[...page].astro
index 08f5fd3..b4e3e07 100644
--- a/src/pages/micro/[...page].astro
+++ b/src/pages/micro/[...page].astro
@@ -1,20 +1,31 @@
---
import { type CollectionEntry, getCollection } from "astro:content";
-import Pagination from "@/components/Paginator.astro";
+import type { GetStaticPaths, Page } from "astro";
+import { Icon } from "astro-icon/components";
import Note from "@/components/note/Note.astro";
+import Pagination from "@/components/Paginator.astro";
import PageLayout from "@/layouts/Base.astro";
import { collectionDateSort } from "@/utils/date";
-import type { GetStaticPaths, Page } from "astro";
-import { Icon } from "astro-icon/components";
export const getStaticPaths = (async ({ paginate }) => {
const MAX_MICRO_PER_PAGE = 10;
- const allMicro = await getCollection("note");
- return paginate(allMicro.sort(collectionDateSort), { pageSize: MAX_MICRO_PER_PAGE });
+
+ // Get both local notes and Pleroma posts
+ const [allNotes, allMicro] = await Promise.all([
+ getCollection("note"),
+ getCollection("micro").catch(() => []), // Fallback to empty array if micro collection fails
+ ]);
+
+ // Combine and sort all micro posts
+ const allMicroPosts = [...allNotes, ...allMicro].sort(
+ (a, b) => b.data.publishDate.getTime() - a.data.publishDate.getTime(),
+ );
+
+ return paginate(allMicroPosts, { pageSize: MAX_MICRO_PER_PAGE });
}) satisfies GetStaticPaths;
interface Props {
- page: Page<CollectionEntry<"note">>;
+ page: Page<CollectionEntry<"note"> | CollectionEntry<"micro">>;
uniqueTags: string[];
}
diff --git a/src/pages/micro/[...slug].astro b/src/pages/micro/[...slug].astro
index 2ce847d..54f6234 100644
--- a/src/pages/micro/[...slug].astro
+++ b/src/pages/micro/[...slug].astro
@@ -1,16 +1,22 @@
---
import { getCollection } from "astro:content";
-
+import type { GetStaticPaths, InferGetStaticPropsType } from "astro";
import Note from "@/components/note/Note.astro";
import PageLayout from "@/layouts/Base.astro";
-import type { GetStaticPaths, InferGetStaticPropsType } from "astro";
// if you're using an adaptor in SSR mode, getStaticPaths wont work -> https://docs.astro.build/en/guides/routing/#modifying-the-slug-example-for-ssr
export const getStaticPaths = (async () => {
- const allNotes = await getCollection("note");
- return allNotes.map((note) => ({
- params: { slug: note.id },
- props: { note },
+ // Get both local notes and Pleroma posts
+ const [allNotes, allMicro] = await Promise.all([
+ getCollection("note"),
+ getCollection("micro").catch(() => []), // Fallback to empty array if micro collection fails
+ ]);
+
+ const allPosts = [...allNotes, ...allMicro];
+
+ return allPosts.map((post) => ({
+ params: { slug: post.id },
+ props: { note: post }, // Keep 'note' name for compatibility with existing component
}));
}) satisfies GetStaticPaths;
diff --git a/src/pages/micro/rss.xml.ts b/src/pages/micro/rss.xml.ts
index 7311319..0827ccb 100644
--- a/src/pages/micro/rss.xml.ts
+++ b/src/pages/micro/rss.xml.ts
@@ -1,18 +1,28 @@
import { getCollection } from "astro:content";
-import { siteConfig } from "@/site.config";
import rss from "@astrojs/rss";
+import { siteConfig } from "@/site.config";
export const GET = async () => {
- const micro = await getCollection("note");
+ // Get both local notes and Pleroma posts
+ const [allNotes, allMicro] = await Promise.all([
+ getCollection("note"),
+ getCollection("micro").catch(() => []), // Fallback to empty array if micro collection fails
+ ]);
+
+ // Combine and sort all micro posts
+ const allMicroPosts = [...allNotes, ...allMicro].sort(
+ (a, b) => b.data.publishDate.getTime() - a.data.publishDate.getTime(),
+ );
return rss({
title: siteConfig.title,
description: siteConfig.description,
site: import.meta.env.SITE,
- items: micro.map((note) => ({
- title: note.data.title,
- pubDate: note.data.publishDate,
- link: `micro/${note.id}/`,
+ items: allMicroPosts.map((post) => ({
+ title: post.data.title,
+ pubDate: post.data.publishDate,
+ link: `micro/${post.id}/`,
+ description: post.data.description,
})),
});
};