From afc97ef2cb397a3e0e6b00febb218f06257b607b Mon Sep 17 00:00:00 2001 From: Timothy Jaeryang Baek Date: Sat, 6 Jun 2026 21:32:57 +0100 Subject: [PATCH 1/3] refac --- .../src/lib/components/ChangelogModal.svelte | 121 ++++++++---------- .../src/lib/components/SettingsModal.svelte | 4 +- 2 files changed, 58 insertions(+), 67 deletions(-) diff --git a/cptr/frontend/src/lib/components/ChangelogModal.svelte b/cptr/frontend/src/lib/components/ChangelogModal.svelte index fe52b69b..14621c05 100644 --- a/cptr/frontend/src/lib/components/ChangelogModal.svelte +++ b/cptr/frontend/src/lib/components/ChangelogModal.svelte @@ -8,22 +8,15 @@ type VersionData = { date: string; [section: string]: string | ChangelogEntry[] }; let changelog = $state | null>(null); - let selectedVersion = $state(null); let error = $state(false); const versions = $derived.by(() => (changelog ? Object.entries(changelog) : [])); - const selectedData = $derived.by(() => { - if (!versions.length) return null; - const version = selectedVersion ?? versions[0][0]; - return versions.find(([ver]) => ver === version) ?? versions[0]; - }); $effect(() => { if ($showChangelog && !changelog && !error) { fetchJSON>('/api/changelog') .then((data) => { changelog = data; - selectedVersion = Object.keys(data)[0] ?? null; }) .catch(() => { error = true; @@ -68,10 +61,9 @@

What's New

- {#if selectedData} - {@const [ver, data] = selectedData} + {#if $appVersion}

- v{ver} ยท {formatDate(data.date)} + Release Notes

{/if}
@@ -85,63 +77,62 @@
- {#if versions.length > 1} -
- {#each versions as [ver], i (ver)} - - {/each} -
- {/if} -
- {#if selectedData} - {@const [_ver, data] = selectedData} + {#if versions.length > 0}
- {#each Object.entries(data).filter(([key]) => key !== 'date') as [section, items]} - {#if Array.isArray(items) && items.length > 0} -
-

- {section} -

-
    - {#each items as entry} -
  • - -
    - {#if entry.title} - {entry.title} - {#if entry.content} - {entry.content} - {/if} - {:else} - {entry.content || entry.raw} - {/if} -
    -
  • - {/each} -
-
- {/if} + {#each versions as [ver, data], i} +
+
+

v{ver}

+

{formatDate(data.date)}

+
+ + {#each Object.entries(data).filter(([key]) => key !== 'date') as [section, items]} + {#if Array.isArray(items) && items.length > 0} +
+ + {section} + +
    + {#each items as entry} +
  • + +
    + {#if entry.title} + {entry.title} + {#if entry.content} + {entry.content} + {/if} + {:else} + {entry.content || entry.raw} + {/if} +
    +
  • + {/each} +
+
+ {/if} + {/each} +
{/each}
{:else if error} diff --git a/cptr/frontend/src/lib/components/SettingsModal.svelte b/cptr/frontend/src/lib/components/SettingsModal.svelte index 53c3ba28..44fb49a0 100644 --- a/cptr/frontend/src/lib/components/SettingsModal.svelte +++ b/cptr/frontend/src/lib/components/SettingsModal.svelte @@ -22,9 +22,9 @@ class="w-full max-w-3xl mx-4 md:mx-0 flex flex-col md:flex-row max-h-[85vh] md:h-[560px]" >