From be1da5aec75e77470b67c2f9823bef632128b451 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Thu, 24 Jul 2025 04:04:54 -0700 Subject: [PATCH] refactor: remove EditorJS support from RSS feed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Clean up RSS content parsing to only support TipTap/Edra format since that's what the application uses. Removed unnecessary EditorJS format handling. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/routes/rss/+server.ts | 61 ++------------------------------------- 1 file changed, 2 insertions(+), 59 deletions(-) diff --git a/src/routes/rss/+server.ts b/src/routes/rss/+server.ts index 33d312b..43b360b 100644 --- a/src/routes/rss/+server.ts +++ b/src/routes/rss/+server.ts @@ -22,56 +22,7 @@ function convertContentToHTML(content: any): string { return `

${escapeXML(content)}

` } - // Handle TipTap/EditorJS JSON format - if (content.blocks && Array.isArray(content.blocks)) { - return content.blocks - .map((block: any) => { - switch (block.type) { - case 'paragraph': - // Handle both data.text and content formats - const paragraphText = block.data?.text || block.content || '' - return paragraphText ? `

${escapeXML(paragraphText)}

` : '' - case 'heading': - case 'header': - const level = block.data?.level || block.level || 2 - const headingText = block.data?.text || block.content || '' - return headingText ? `${escapeXML(headingText)}` : '' - case 'list': - const items = (block.data?.items || block.content || []) - .map((item: any) => { - const itemText = typeof item === 'string' ? item : item.content || item.text || '' - return itemText ? `
  • ${escapeXML(itemText)}
  • ` : '' - }) - .filter((item: string) => item) - .join('') - if (!items) return '' - const listType = block.data?.style || block.listType - return listType === 'ordered' ? `
      ${items}
    ` : `` - case 'image': - const imageUrl = block.data?.file?.url || block.data?.url || '' - const caption = block.data?.caption || '' - if (!imageUrl) return '' - return `
    ${escapeXML(caption)}${caption ? `
    ${escapeXML(caption)}
    ` : ''}
    ` - case 'code': - const code = block.data?.code || block.content || '' - return code ? `
    ${escapeXML(code)}
    ` : '' - case 'quote': - case 'blockquote': - const quoteText = block.data?.text || block.content || '' - const citation = block.data?.caption || '' - if (!quoteText) return '' - return `
    ${escapeXML(quoteText)}${citation ? `${escapeXML(citation)}` : ''}
    ` - default: - // Fallback for unknown block types - const defaultText = block.data?.text || block.content || '' - return defaultText ? `

    ${escapeXML(defaultText)}

    ` : '' - } - }) - .filter((html: string) => html) // Remove empty blocks - .join('\n') - } - - // Handle TipTap format with doc root + // Handle TipTap/Edra format with doc root if (content.type === 'doc' && content.content && Array.isArray(content.content)) { return content.content .map((node: any) => { @@ -151,15 +102,7 @@ function extractTextSummary(content: any, maxLength: number = 300): string { if (typeof content === 'string') { text = content } - // Handle EditorJS format - else if (content.blocks && Array.isArray(content.blocks)) { - text = content.blocks - .filter((block: any) => block.type === 'paragraph') - .map((block: any) => block.data?.text || block.content || '') - .filter((t: string) => t) - .join(' ') - } - // Handle TipTap format + // Handle TipTap/Edra format else if (content.type === 'doc' && content.content && Array.isArray(content.content)) { text = content.content .filter((node: any) => node.type === 'paragraph')