From bc8c9b78e6e7a37047e4ec600fa367ff6dc06b6b Mon Sep 17 00:00:00 2001 From: Jono M Date: Mon, 16 Oct 2023 16:06:38 +0100 Subject: [PATCH 1/3] Fixed bugs with saving in portal modal (#18649) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refs https://github.com/TryGhost/Product/issues/3832 --- ### 🤖 Generated by Copilot at 8ad5f58 This pull request enhances the portal modal component in the admin settings for membership. It improves how it handles errors, saves changes, and communicates with the user. --- .../settings/membership/portal/PortalModal.tsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/admin-x-settings/src/components/settings/membership/portal/PortalModal.tsx b/apps/admin-x-settings/src/components/settings/membership/portal/PortalModal.tsx index 5e80222798..5dccb08f66 100644 --- a/apps/admin-x-settings/src/components/settings/membership/portal/PortalModal.tsx +++ b/apps/admin-x-settings/src/components/settings/membership/portal/PortalModal.tsx @@ -113,9 +113,9 @@ const PortalModal: React.FC = () => { if (verifyEmail) { checkToken({token: verifyEmail}); } - }, [verifyEmail, verifyToken]); + }, [handleError, verifyEmail, verifyToken]); - const {formState, saveState, handleSave, updateForm} = useForm({ + const {formState, setFormState, saveState, handleSave, updateForm} = useForm({ initialState: { settings: settings as Dirtyable[], tiers: tiers as Dirtyable[] @@ -123,8 +123,16 @@ const PortalModal: React.FC = () => { onSave: async () => { await Promise.all(formState.tiers.filter(({dirty}) => dirty).map(tier => editTier(tier))); + setFormState(state => ({...state, tiers: formState.tiers.map(tier => ({...tier, dirty: false}))})); - const {meta, settings: currentSettings} = await editSettings(formState.settings.filter(setting => setting.dirty)); + const changedSettings = formState.settings.filter(setting => setting.dirty); + + if (!changedSettings.length) { + return; + } + + const {meta, settings: currentSettings} = await editSettings(changedSettings); + setFormState(state => ({...state, settings: formState.settings.map(setting => ({...setting, dirty: false}))})); if (meta?.sent_email_verification) { const newEmail = formState.settings.find(setting => setting.key === 'members_support_address')?.value; @@ -221,7 +229,7 @@ const PortalModal: React.FC = () => { title='Portal' onOk={async () => { if (!Object.values(errors).filter(Boolean).length) { - await handleSave(); + await handleSave({force: true}); } }} onSelectURL={onSelectURL} From ea076fac6aa52314b0e7b744a2877af0743ef635 Mon Sep 17 00:00:00 2001 From: Peter Zimon Date: Wed, 18 Oct 2023 10:55:09 +0200 Subject: [PATCH 2/3] Fixed viewport width bug in AdminX (#18681) refs. https://github.com/TryGhost/Product/issues/3949 - the viewport was getting really wide because of the whitespace property of newsletter descriptions --- .../settings/email/newsletters/NewslettersList.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/admin-x-settings/src/components/settings/email/newsletters/NewslettersList.tsx b/apps/admin-x-settings/src/components/settings/email/newsletters/NewslettersList.tsx index 27850f2a5b..7b18e59eaf 100644 --- a/apps/admin-x-settings/src/components/settings/email/newsletters/NewslettersList.tsx +++ b/apps/admin-x-settings/src/components/settings/email/newsletters/NewslettersList.tsx @@ -24,19 +24,19 @@ const NewsletterItem: React.FC<{newsletter: Newsletter}> = ({newsletter}) => {
{newsletter.name} - {newsletter.description || 'No description'} + {newsletter.description || 'No description'}
{numberWithCommas(newsletter.count?.active_members || 0) } - Subscribers + Subscribers
{numberWithCommas(newsletter.count?.posts || 0)} - Delivered + Delivered
From cf06037b818bf7e61813c4f163739ca9c29cb2e6 Mon Sep 17 00:00:00 2001 From: Ghost CI <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 18 Oct 2023 09:42:13 +0000 Subject: [PATCH 3/3] v5.69.3 --- ghost/admin/package.json | 2 +- ghost/core/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ghost/admin/package.json b/ghost/admin/package.json index 82e3141c2c..9c2a440170 100644 --- a/ghost/admin/package.json +++ b/ghost/admin/package.json @@ -1,6 +1,6 @@ { "name": "ghost-admin", - "version": "5.69.2", + "version": "5.69.3", "description": "Ember.js admin client for Ghost", "author": "Ghost Foundation", "homepage": "http://ghost.org", diff --git a/ghost/core/package.json b/ghost/core/package.json index 06da036682..ef667e87ac 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -1,6 +1,6 @@ { "name": "ghost", - "version": "5.69.2", + "version": "5.69.3", "description": "The professional publishing platform", "author": "Ghost Foundation", "homepage": "https://ghost.org",