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/rss.xml.ts | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) (limited to 'src/pages/micro/rss.xml.ts') 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: ``, }); }; -- cgit v1.2.3