From 51aa63873681216026d518cde4abeca307818a4b Mon Sep 17 00:00:00 2001 From: Dawid Rycerz Date: Mon, 12 Jan 2026 18:21:12 +0100 Subject: Add infinite posts downloads --- src/pages/micro/[...page].astro | 6 +----- src/pages/micro/rss.xml.ts | 38 +++++++++++++++++++++++++++++++------- src/pages/rss.xml.ts | 6 ++++-- 3 files changed, 36 insertions(+), 14 deletions(-) (limited to 'src/pages') diff --git a/src/pages/micro/[...page].astro b/src/pages/micro/[...page].astro index 93a35de..edfecab 100644 --- a/src/pages/micro/[...page].astro +++ b/src/pages/micro/[...page].astro @@ -51,11 +51,7 @@ const paginationProps = {

- Micro + Micro RSS feed diff --git a/src/pages/micro/rss.xml.ts b/src/pages/micro/rss.xml.ts index ce25129..1fd6f53 100644 --- a/src/pages/micro/rss.xml.ts +++ b/src/pages/micro/rss.xml.ts @@ -1,8 +1,9 @@ import { getCollection } from "astro:content"; import rss from "@astrojs/rss"; +import type { APIContext } from "astro"; import { siteConfig } from "@/site.config"; -export const GET = async () => { +export const GET = async (context: APIContext) => { // Get only Pleroma posts const allMicro = await getCollection("micro").catch(() => []); // Fallback to empty array if micro collection fails @@ -11,15 +12,38 @@ export const GET = async () => { (a, b) => b.data.publishDate.getTime() - a.data.publishDate.getTime(), ); - return rss({ - title: siteConfig.title, - description: siteConfig.description, - site: import.meta.env.SITE, - items: allMicroPosts.map((post) => ({ + // Generate RSS items with full content and images + const items = allMicroPosts.map((post) => { + // Get the pre-rendered HTML from the post + let fullContent = post.rendered?.html || post.body || ""; + + // Append images if available + if (post.data.attachments && post.data.attachments.length > 0) { + const imagesHtml = post.data.attachments + .map( + (att: { url: string; type: string }) => + `

Attachment

`, + ) + .join(""); + fullContent += imagesHtml; + } + + return { title: post.data.title, pubDate: post.data.publishDate, link: `micro/${post.id}/`, description: post.data.description, - })), + content: fullContent, + }; + }); + + const site = context.site || import.meta.env.SITE; + + return rss({ + title: siteConfig.title, + description: siteConfig.description, + site, + items, + customData: ``, }); }; diff --git a/src/pages/rss.xml.ts b/src/pages/rss.xml.ts index 8a6525d..39f3964 100644 --- a/src/pages/rss.xml.ts +++ b/src/pages/rss.xml.ts @@ -1,19 +1,21 @@ import rss from "@astrojs/rss"; +import type { APIContext } from "astro"; import { getAllPosts } from "@/data/post"; import { siteConfig } from "@/site.config"; -export const GET = async () => { +export const GET = async (context: APIContext) => { const posts = await getAllPosts(); return rss({ title: siteConfig.title, description: siteConfig.description, - site: import.meta.env.SITE, + site: context.site || import.meta.env.SITE, items: posts.map((post) => ({ title: post.data.title, description: post.data.description, pubDate: post.data.publishDate, link: `posts/${post.id}/`, })), + customData: ``, }); }; -- cgit v1.2.3