From 0b46ebd433c6a22e696d2093fcae186d802a8ea0 Mon Sep 17 00:00:00 2001 From: Justin Edmund Date: Mon, 24 Nov 2025 07:39:34 -0800 Subject: [PATCH] fix: Handle updatedAt as string in admin form autosave Fixed TypeError when updatedAt field from JSON responses was incorrectly treated as Date object. Added type guards to handle both string and Date types in autosave callbacks across all admin forms. --- src/lib/components/admin/AlbumForm.svelte | 11 +++++++++-- src/lib/components/admin/EssayForm.svelte | 3 ++- src/lib/components/admin/PhotoPostForm.svelte | 3 ++- src/lib/components/admin/SimplePostForm.svelte | 3 ++- 4 files changed, 15 insertions(+), 5 deletions(-) diff --git a/src/lib/components/admin/AlbumForm.svelte b/src/lib/components/admin/AlbumForm.svelte index 07c449b..bdebf97 100644 --- a/src/lib/components/admin/AlbumForm.svelte +++ b/src/lib/components/admin/AlbumForm.svelte @@ -46,7 +46,13 @@ let editorInstance = $state<{ save: () => Promise; clear: () => void } | undefined>() let activeTab = $state('metadata') let pendingMediaIds = $state([]) // Photos to add after album creation - let updatedAt = $state(album?.updatedAt?.toISOString()) + let updatedAt = $state( + album?.updatedAt + ? typeof album.updatedAt === 'string' + ? album.updatedAt + : album.updatedAt.toISOString() + : undefined + ) const tabOptions = [ { value: 'metadata', label: 'Metadata' }, @@ -114,7 +120,8 @@ return await response.json() }, onSaved: (saved: Album, { prime }) => { - updatedAt = saved.updatedAt.toISOString() + updatedAt = + typeof saved.updatedAt === 'string' ? saved.updatedAt : saved.updatedAt.toISOString() prime(buildPayload()) if (draftKey) clearDraft(draftKey) } diff --git a/src/lib/components/admin/EssayForm.svelte b/src/lib/components/admin/EssayForm.svelte index e802b53..581e738 100644 --- a/src/lib/components/admin/EssayForm.svelte +++ b/src/lib/components/admin/EssayForm.svelte @@ -79,7 +79,8 @@ return await response.json() }, onSaved: (saved: Post, { prime }) => { - updatedAt = saved.updatedAt.toISOString() + updatedAt = + typeof saved.updatedAt === 'string' ? saved.updatedAt : saved.updatedAt.toISOString() prime(buildPayload()) if (draftKey) clearDraft(draftKey) } diff --git a/src/lib/components/admin/PhotoPostForm.svelte b/src/lib/components/admin/PhotoPostForm.svelte index 895cc32..5b5efc4 100644 --- a/src/lib/components/admin/PhotoPostForm.svelte +++ b/src/lib/components/admin/PhotoPostForm.svelte @@ -97,7 +97,8 @@ let autoSave = mode === 'edit' && postId return await response.json() }, onSaved: (saved: Post, { prime }) => { - updatedAt = saved.updatedAt.toISOString() + updatedAt = + typeof saved.updatedAt === 'string' ? saved.updatedAt : saved.updatedAt.toISOString() prime(buildPayload()) if (draftKey) clearDraft(draftKey) } diff --git a/src/lib/components/admin/SimplePostForm.svelte b/src/lib/components/admin/SimplePostForm.svelte index 25c65f3..cf78e9e 100644 --- a/src/lib/components/admin/SimplePostForm.svelte +++ b/src/lib/components/admin/SimplePostForm.svelte @@ -115,7 +115,8 @@ let autoSave = mode === 'edit' && postId return await response.json() }, onSaved: (saved: Post, { prime }) => { - updatedAt = saved.updatedAt.toISOString() + updatedAt = + typeof saved.updatedAt === 'string' ? saved.updatedAt : saved.updatedAt.toISOString() prime(buildPayload()) if (draftKey) clearDraft(draftKey) }