From 45857a478364d4e38bd060a4ea99e3230837e3b3 Mon Sep 17 00:00:00 2001 From: Andrin <65789180+codeofandrin@users.noreply.github.com> Date: Sat, 8 Feb 2025 15:15:35 +0100 Subject: [PATCH] Use github release description instead of md files --- src/app/(general)/release-notes/page.tsx | 12 +++++------- src/content/release-notes/.gitkeep | 0 src/content/release-notes/2025-01-20_v0.1.0.md | 7 ------- src/content/release-notes/2025-02-08_v0.1.1.md | 9 --------- src/utils/helpers.ts | 5 +++-- src/utils/server/github.ts | 17 +++++++++++++++-- 6 files changed, 23 insertions(+), 27 deletions(-) delete mode 100644 src/content/release-notes/.gitkeep delete mode 100644 src/content/release-notes/2025-01-20_v0.1.0.md delete mode 100644 src/content/release-notes/2025-02-08_v0.1.1.md diff --git a/src/app/(general)/release-notes/page.tsx b/src/app/(general)/release-notes/page.tsx index 879fc1f..54969ed 100644 --- a/src/app/(general)/release-notes/page.tsx +++ b/src/app/(general)/release-notes/page.tsx @@ -3,16 +3,15 @@ import type { Metadata } from "next" import MarkdownContent from "@/components/common/MarkdownContent" import { extractMarkdownMetaData } from "@/utils/helpers" +import { getReleaseNotes } from "@/utils/server/github" + export const metadata: Metadata = { title: "Release Notes - exifoo", description: "Latest changes of the exifoo desktop app." } -export default function ReleaseNotes() { - const importAllFiles = (r: any) => r.keys().map(r) - const markdownFiles = importAllFiles(require.context("../../../content/release-notes", false, /\.md$/)) - .sort() - .reverse() +export default async function ReleaseNotes() { + const markdownFiles: string[] = await getReleaseNotes() return (
@@ -20,8 +19,7 @@ export default function ReleaseNotes() {

Release Notes

- {markdownFiles.map((release: { default: string }, i: number) => { - let content = release.default + {markdownFiles.map((content: string, i: number) => { const [rawMetaData, metaData] = extractMarkdownMetaData(content) content = content.replace(rawMetaData[0], "") const date = metaData.date diff --git a/src/content/release-notes/.gitkeep b/src/content/release-notes/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/src/content/release-notes/2025-01-20_v0.1.0.md b/src/content/release-notes/2025-01-20_v0.1.0.md deleted file mode 100644 index 575eee5..0000000 --- a/src/content/release-notes/2025-01-20_v0.1.0.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -date: January 20, 2025 ---- - -## v0.1.0 - -First release diff --git a/src/content/release-notes/2025-02-08_v0.1.1.md b/src/content/release-notes/2025-02-08_v0.1.1.md deleted file mode 100644 index 88604f1..0000000 --- a/src/content/release-notes/2025-02-08_v0.1.1.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -date: February 8, 2025 ---- - -## v0.1.1 - -#### 🐞 Bugfixes - -- Fix checkout links diff --git a/src/utils/helpers.ts b/src/utils/helpers.ts index 00b3d29..fa99d04 100644 --- a/src/utils/helpers.ts +++ b/src/utils/helpers.ts @@ -9,12 +9,13 @@ export function extractMarkdownMetaData(text: string): Array { if (rawMetaData!) { // rawMeta[1] are the stuff between "---" - keyValues = rawMetaData[1].split("\n") + keyValues = rawMetaData[1].split("\r\n") // which returns a list of key values: ["key1: value", "key2: value"] keyValues.forEach((keyValue) => { // split each keyValue to keys and values - const [key, value] = keyValue.split(":") + let [key, value] = keyValue.split(":") + key = key.trim() metaData[key] = value.trim() }) } diff --git a/src/utils/server/github.ts b/src/utils/server/github.ts index ec3d318..49a6c31 100644 --- a/src/utils/server/github.ts +++ b/src/utils/server/github.ts @@ -2,7 +2,7 @@ import "server-only" const API_BASE_URL = "https://api.github.com" -async function request(method: string, url: string): Promise> { +async function request(method: string, url: string): Promise | Record[]> { const headers = { Accept: "application/vnd.github+json", Authorization: `Bearer ${process.env.GH_TOKEN}`, @@ -16,7 +16,7 @@ async function request(method: string, url: string): Promise> { export async function getMacOSDownloadURL(arch: string): Promise { const latestReleaseUrl = "/repos/codeofandrin/exifoo-releases/releases/latest" - const data = await request("GET", latestReleaseUrl) + const data: Record = await request("GET", latestReleaseUrl) const releaseAssets: Record[] = data.assets let downloadUrl @@ -31,3 +31,16 @@ export async function getMacOSDownloadURL(arch: string): Promise { return downloadUrl } + +export async function getReleaseNotes(): Promise { + const releasesUrl = "/repos/codeofandrin/exifoo-releases/releases" + const data = (await request("GET", releasesUrl)) as Record[] + + let releaseNotes: string[] = [] + for (let i = 0; i < data.length; i++) { + const release = data[i] + releaseNotes.push(release.body) + } + + return releaseNotes +}