From 89e44d4fab3bbd6e358a0a8f3f22be77a6309914 Mon Sep 17 00:00:00 2001 From: Rotimi Best Date: Thu, 11 Jun 2026 20:32:39 +0100 Subject: [PATCH] fix(newsfeed): load saved content when reopening the edit modal Sync modal editor state from the updated feed on open, clear editFeed on reset, and remount TextEditor so a second edit shows the latest HTML instead of stale content. --- .../components/newsfeed/card/card.svelte | 7 +- .../components/newsfeed/new-feed-modal.svelte | 36 ++++++--- .../components/newsfeed/new-feed-modal.svelte | 26 ++++--- lefthook.yml | 2 +- package.json | 3 +- scripts/format-changed.mjs | 73 +++++++++++++++++++ 6 files changed, 116 insertions(+), 31 deletions(-) create mode 100644 scripts/format-changed.mjs diff --git a/apps/dashboard/src/lib/features/course/components/newsfeed/card/card.svelte b/apps/dashboard/src/lib/features/course/components/newsfeed/card/card.svelte index ce6e99ee..e56799cb 100644 --- a/apps/dashboard/src/lib/features/course/components/newsfeed/card/card.svelte +++ b/apps/dashboard/src/lib/features/course/components/newsfeed/card/card.svelte @@ -51,12 +51,9 @@ let isDeleteFeedModal = $state(false); const openEditFeed = () => { - newsfeedApi.openNewFeedModal(); + editFeed = feed; edit = true; - - if (edit === true) { - editFeed = feed; - } + newsfeedApi.openNewFeedModal(); }; const handleReact = (reactionType: string) => addNewReaction(reactionType, feed.id, author.id); diff --git a/apps/dashboard/src/lib/features/course/components/newsfeed/new-feed-modal.svelte b/apps/dashboard/src/lib/features/course/components/newsfeed/new-feed-modal.svelte index 194b22bd..583269eb 100644 --- a/apps/dashboard/src/lib/features/course/components/newsfeed/new-feed-modal.svelte +++ b/apps/dashboard/src/lib/features/course/components/newsfeed/new-feed-modal.svelte @@ -21,7 +21,18 @@ newPost: '' }); - let newPost = $state(edit === true ? editFeed?.content : ''); + let newPost = $state(''); + + $effect(() => { + if (!newsfeedApi.isNewFeedModalOpen) { + newPost = ''; + return; + } + + if (edit && editFeed) { + newPost = editFeed.content || ''; + } + }); const onPost = async () => { isLoading = true; @@ -31,9 +42,7 @@ await newsfeedApi.update(courseId, editFeed.id, { content: newPost ?? '' }); if (newsfeedApi.success) { - edit = false; - newPost = ''; - newsfeedApi.closeNewFeedModal(); + resetEditor(); } } else { await newsfeedApi.create(courseId, { @@ -59,6 +68,7 @@ const resetEditor = () => { newPost = ''; edit = false; + editFeed = null; newsfeedApi.closeNewFeedModal(); }; @@ -81,14 +91,16 @@
- { - newPost = text; - }} - editorClass="max-h-[400px]" - placeholder={$t('course.navItem.news_feed.heading_button.placeholder')} - /> + {#key edit ? editFeed?.id : 'new'} + { + newPost = text; + }} + editorClass="max-h-[400px]" + placeholder={$t('course.navItem.news_feed.heading_button.placeholder')} + /> + {/key} {#if errors.newPost}

{errors.newPost}

{/if} diff --git a/apps/dashboard/src/lib/features/program/components/newsfeed/new-feed-modal.svelte b/apps/dashboard/src/lib/features/program/components/newsfeed/new-feed-modal.svelte index 660d7f4d..3be647ad 100644 --- a/apps/dashboard/src/lib/features/program/components/newsfeed/new-feed-modal.svelte +++ b/apps/dashboard/src/lib/features/program/components/newsfeed/new-feed-modal.svelte @@ -20,13 +20,13 @@ let newPost = $state(''); $effect(() => { - if (edit && editFeed) { - newPost = editFeed.content || ''; + if (!programNewsfeedApi.isNewFeedModalOpen) { + newPost = ''; return; } - if (!programNewsfeedApi.isNewFeedModalOpen) { - newPost = ''; + if (edit && editFeed) { + newPost = editFeed.content || ''; } }); @@ -84,14 +84,16 @@
- { - newPost = text; - }} - editorClass="max-h-[400px]" - placeholder={$t('programs.newsfeed.editor_placeholder')} - /> + {#key edit ? editFeed?.id : 'new'} + { + newPost = text; + }} + editorClass="max-h-[400px]" + placeholder={$t('programs.newsfeed.editor_placeholder')} + /> + {/key}