diff --git a/src/app/feed.xml/route.ts b/src/app/feed.xml/route.ts index 99d97d0..a0c9fc6 100644 --- a/src/app/feed.xml/route.ts +++ b/src/app/feed.xml/route.ts @@ -72,39 +72,54 @@ function formatRssDate(dateStr: string) { * @returns The formatted release note as a HTML string. */ function formatReleaseNote(releaseNote: ReleaseNote) { - let content = - '

If you encounter any issues, please report them on the issues page. Thanks everyone for your feedback! ❤️

'; + let content = `

+ If you encounter any issues, please report them on the issues page. + Thanks everyone for your feedback! ❤️ +

`; + + if (releaseNote.image) { + content += `Release Image for version ${releaseNote.version}`; + } if (releaseNote.extra) { content += `

${releaseNote.extra.replace(/(\n)/g, "
")}

`; } - if (releaseNote.breakingChanges) { - content += `

⚠️ Breaking changes

`; - content += ``; - } - - if (releaseNote.features) { - content += `

⭐ Features

`; - content += ``; - } - - if (releaseNote.fixes) { - content += `

✓ Fixes

`; - content += ``; - } + content += addReleaseNoteSection("⚠️ Breaking changes", releaseNote.breakingChanges); + content += addReleaseNoteSection("✓ Fixes", releaseNote.fixes?.map(fixToReleaseNote)); + content += addReleaseNoteSection("🖌 Theme Changes", releaseNote.themeChanges) + content += addReleaseNoteSection("⭐ Features", releaseNote.features); return content; } + +function addReleaseNoteSection(title: string, items?: string[]): string { + if (!items) { + return ""; + } + + let content = `

${title}

`; + content += ``; + return content; +} + +function fixToReleaseNote(fix?: Exclude[number]) { + if (!fix || !fix.description || fix.description.length === 0) { + return ""; + } + + let note = fix.description; + if (fix.issue) { + note += ` (#${fix.issue})`; + } + return note; +}