From 9de307d5c5e00ebf316b8b08de6876d562ae1f2d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Fri, 19 Jun 2026 15:28:41 -0300 Subject: [PATCH 1/3] fix: adjust popup pattern, add isSaving on popups, return promises, remove open prop, adjust tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .../form-template-item-list-page.js | 4 +- .../form-templates/form-template-list-page.js | 20 ++-- .../form-templates/form-template-popup.js | 4 +- .../form-templates/sponsor-inventory-popup.js | 26 ++++- .../inventory/inventory-list-page.js | 23 ++--- .../page-templates/page-template-list-page.js | 11 ++- .../page-template-popup/index.js | 37 ++++++-- src/pages/sponsors/popup/add-sponsor-popup.js | 34 +++++-- src/pages/sponsors/popup/edit-tier-popup.js | 37 ++++++-- .../__tests__/show-pages-list-page.test.js | 4 +- .../sponsors/show-pages-list-page/index.js | 28 ++++-- src/pages/sponsors/sponsor-list-page.js | 11 +-- .../sponsor-forms-manage-items.js | 4 +- .../__tests__/sponsor-pages-tab.test.js | 4 +- .../add-sponsor-page-template-popup/index.js | 25 ++++- .../tabs/sponsor-pages-tab/index.js | 95 +++++++++---------- .../sponsors/summit-sponsorship-list-page.js | 21 ++-- .../__tests__/sponsorship-list-page.test.js | 2 +- .../components/sponsorship-dialog.js | 20 ++-- .../sponsorship-list-page.js | 17 +--- src/pages/tags/tag-list-page.js | 6 +- 21 files changed, 271 insertions(+), 162 deletions(-) diff --git a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js index 95e6bcd47..dda570bab 100644 --- a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js +++ b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js @@ -177,7 +177,7 @@ const FormTemplateItemListPage = ({ ); }; - const handleFormTemplateSave = (item) => { + const handleFormTemplateSave = (item) => saveFormTemplateItem(formTemplateId, item).then(() => getFormTemplateItems( formTemplateId, @@ -189,8 +189,6 @@ const FormTemplateItemListPage = ({ showArchived ) ); - setShowInventoryItemModal(false); - }; const columns = [ { diff --git a/src/pages/sponsors-global/form-templates/form-template-list-page.js b/src/pages/sponsors-global/form-templates/form-template-list-page.js index 0d7fef187..8c42901c4 100644 --- a/src/pages/sponsors-global/form-templates/form-template-list-page.js +++ b/src/pages/sponsors-global/form-templates/form-template-list-page.js @@ -212,17 +212,17 @@ const FormTemplateListPage = ({ sortDir: orderDir }; - const handleOnSave = async (values) => { - await saveFormTemplate(values); - getFormTemplates( - "", - DEFAULT_CURRENT_PAGE, - perPage, - order, - orderDir, - showArchived + const handleOnSave = (values) => + saveFormTemplate(values).then(() => + getFormTemplates( + "", + DEFAULT_CURRENT_PAGE, + perPage, + order, + orderDir, + showArchived + ) ); - }; return (
diff --git a/src/pages/sponsors-global/form-templates/form-template-popup.js b/src/pages/sponsors-global/form-templates/form-template-popup.js index baef4dfdc..ed960e8b0 100644 --- a/src/pages/sponsors-global/form-templates/form-template-popup.js +++ b/src/pages/sponsors-global/form-templates/form-template-popup.js @@ -74,9 +74,9 @@ const FormTemplateDialog = ({ if (isSaving) return; setIsSaving(true); - Promise.resolve(onSave(finalValues)) + onSave(finalValues) .then(() => { - closePopup(); + onClose(); }) .catch(() => { // keep dialog open on save error to preserve user input diff --git a/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js b/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js index ed5e0640b..6fc3ce635 100644 --- a/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js +++ b/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js @@ -45,6 +45,8 @@ const SponsorItemDialog = ({ onMetaFieldTypeValueDeleted, entity: initialEntity }) => { + const [isSaving, setIsSaving] = useState(false); + const formik = useFormik({ initialValues: { ...initialEntity, @@ -65,7 +67,13 @@ const SponsorItemDialog = ({ quantity_limit_per_show: positiveNumberValidation(), meta_fields: formMetafieldsValidation() }), - onSubmit: (values) => onSave(values) + onSubmit: (values) => { + if (isSaving) return; + setIsSaving(true); + onSave(values) + .then(() => onClose()) + .finally(() => setIsSaving(false)); + } }); const mediaType = { @@ -79,6 +87,7 @@ const SponsorItemDialog = ({ useScrollToError(formik); const handleClose = () => { + if (isSaving) return; formik.resetForm(); onClose(); }; @@ -92,12 +101,18 @@ const SponsorItemDialog = ({ disableEnforceFocus disableAutoFocus disableRestoreFocus + disableEscapeKeyDown={isSaving} > {initialEntity.id ? T.translate("edit_inventory_item.edit_item") : T.translate("edit_inventory_item.new_item")} - + @@ -227,7 +242,12 @@ const SponsorItemDialog = ({ - diff --git a/src/pages/sponsors-global/inventory/inventory-list-page.js b/src/pages/sponsors-global/inventory/inventory-list-page.js index b6e0d072f..be4087413 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -246,20 +246,17 @@ const InventoryListPage = ({ setOpen(true); }; - const handleInventorySave = (item) => { - saveInventoryItem(item) - .then(() => - getInventoryItems( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ) + const handleInventorySave = (item) => + saveInventoryItem(item).then(() => + getInventoryItems( + term, + currentPage, + perPage, + order, + orderDir, + showArchived ) - .finally(() => setOpen(false)); - }; + ); const handleArchiveItem = (item) => item.is_archived diff --git a/src/pages/sponsors-global/page-templates/page-template-list-page.js b/src/pages/sponsors-global/page-templates/page-template-list-page.js index 0b4b05d21..64113a3d3 100644 --- a/src/pages/sponsors-global/page-templates/page-template-list-page.js +++ b/src/pages/sponsors-global/page-templates/page-template-list-page.js @@ -115,7 +115,16 @@ const PageTemplateListPage = ({ }; const handleSavePageTemplate = (entity) => { - savePageTemplate(entity).then(() => setOpenPageDialog(false)); + savePageTemplate(entity).then(() => + getPageTemplates( + term, + DEFAULT_CURRENT_PAGE, + perPage, + order, + orderDir, + showArchived + ) + ); }; const handleArchive = (item) => diff --git a/src/pages/sponsors-global/page-templates/page-template-popup/index.js b/src/pages/sponsors-global/page-templates/page-template-popup/index.js index 91a7b2068..82987ca66 100644 --- a/src/pages/sponsors-global/page-templates/page-template-popup/index.js +++ b/src/pages/sponsors-global/page-templates/page-template-popup/index.js @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import T from "i18n-react/dist/i18n-react"; import PropTypes from "prop-types"; import { @@ -43,6 +43,7 @@ const PageTemplatePopup = ({ sponsorshipIds, title }) => { + const [isSaving, setIsSaving] = useState(false); const popupTitle = title ?? (pageTemplate?.id @@ -129,14 +130,17 @@ const PageTemplatePopup = ({ }), modules: yup.array().of(moduleSchema) }), - enableReinitialize: true, onSubmit: (values) => { + if (isSaving) return; + setIsSaving(true); const modulesWithOrder = values.modules.map((m, idx) => ({ ...m, custom_order: idx })); - onSave({ ...values, modules: modulesWithOrder }); + onSave({ ...values, modules: modulesWithOrder }) + .then(() => onClose()) + .finally(() => setIsSaving(false)); } }); @@ -179,11 +183,27 @@ const PageTemplatePopup = ({ }); }; + const handleClose = () => { + if (isSaving) return; + onClose(); + }; + return ( - + {popupTitle} - + @@ -306,7 +326,12 @@ const PageTemplatePopup = ({ - diff --git a/src/pages/sponsors/popup/add-sponsor-popup.js b/src/pages/sponsors/popup/add-sponsor-popup.js index e44b14512..75011f32a 100644 --- a/src/pages/sponsors/popup/add-sponsor-popup.js +++ b/src/pages/sponsors/popup/add-sponsor-popup.js @@ -1,4 +1,4 @@ -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import T from "i18n-react/dist/i18n-react"; import { FormikProvider, useFormik } from "formik"; import * as yup from "yup"; @@ -23,7 +23,9 @@ import useScrollToError from "../../../hooks/useScrollToError"; import CompanyInputMUI from "../../../components/mui/formik-inputs/company-input-mui"; import SponsorshipsBySummitSelectMUI from "../../../components/mui/formik-inputs/sponsorship-summit-select-mui"; -const AddSponsorDialog = ({ open, onClose, onSubmit, summitId }) => { +const AddSponsorDialog = ({ onClose, onSubmit, summitId }) => { + const [isSaving, setIsSaving] = useState(false); + const formik = useFormik({ initialValues: { company: null, @@ -51,7 +53,13 @@ const AddSponsorDialog = ({ open, onClose, onSubmit, summitId }) => { ) .min(1, "At least one sponsorship is required") }), - onSubmit, + onSubmit: (values) => { + if (isSaving) return; + setIsSaving(true); + onSubmit(values) + .then(() => onClose()) + .finally(() => setIsSaving(false)); + }, enableReinitialize: true }); @@ -59,6 +67,7 @@ const AddSponsorDialog = ({ open, onClose, onSubmit, summitId }) => { useScrollToError(formik); const handleClose = () => { + if (isSaving) return; formik.resetForm(); onClose(); }; @@ -70,12 +79,23 @@ const AddSponsorDialog = ({ open, onClose, onSubmit, summitId }) => { }, [formik.errors]); return ( - + {T.translate("sponsor_list.add_sponsor")} - handleClose()} sx={{ mr: 1 }}> + handleClose()} + sx={{ mr: 1 }} + disabled={isSaving} + > @@ -135,7 +155,8 @@ const AddSponsorDialog = ({ open, onClose, onSubmit, summitId }) => { variant="contained" disabled={ !formik.values.company || - formik.values.sponsorships.length === 0 + formik.values.sponsorships.length === 0 || + isSaving } > {T.translate("sponsor_list.add_sponsor")} @@ -148,7 +169,6 @@ const AddSponsorDialog = ({ open, onClose, onSubmit, summitId }) => { }; AddSponsorDialog.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onSubmit: PropTypes.func.isRequired, summitId: PropTypes.number.isRequired diff --git a/src/pages/sponsors/popup/edit-tier-popup.js b/src/pages/sponsors/popup/edit-tier-popup.js index 48eb28c22..def72c1ae 100644 --- a/src/pages/sponsors/popup/edit-tier-popup.js +++ b/src/pages/sponsors/popup/edit-tier-popup.js @@ -1,4 +1,4 @@ -import React, { useEffect } from "react"; +import React, { useEffect, useState } from "react"; import T from "i18n-react/dist/i18n-react"; import { useFormik, FormikProvider } from "formik"; import * as yup from "yup"; @@ -27,13 +27,14 @@ import MuiFormikSelect from "../../../components/mui/formik-inputs/mui-formik-se import MuiFormikCheckbox from "../../../components/mui/formik-inputs/mui-formik-checkbox"; const EditTierDialog = ({ - open, onClose, onSubmit, onBadgeImageAttach, onBadgeImageRemove, entity: initialEntity }) => { + const [isSaving, setIsSaving] = useState(false); + const formik = useFormik({ initialValues: initialEntity, validationSchema: yup.object({ @@ -69,7 +70,13 @@ const EditTierDialog = ({ ), should_display_on_lobby_page: yup.bool(T.translate("validation.boolean")) }), - onSubmit, + onSubmit: (values) => { + if (isSaving) return; + setIsSaving(true); + onSubmit(values) + .then(() => onClose()) + .finally(() => setIsSaving(false)); + }, enableReinitialize: true }); @@ -88,6 +95,7 @@ const EditTierDialog = ({ }; const handleClose = () => { + if (isSaving) return; formik.resetForm(); onClose(); }; @@ -123,14 +131,25 @@ const EditTierDialog = ({ ]; return ( - + {`${initialEntity.id ? "Edit" : "Add"} ${T.translate( "edit_summit_sponsorship.tier" )}`} - handleClose()} sx={{ mr: 1 }}> + handleClose()} + sx={{ mr: 1 }} + disabled={isSaving} + > @@ -512,7 +531,12 @@ const EditTierDialog = ({ - @@ -523,7 +547,6 @@ const EditTierDialog = ({ }; EditTierDialog.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onSubmit: PropTypes.func.isRequired }; diff --git a/src/pages/sponsors/show-pages-list-page/__tests__/show-pages-list-page.test.js b/src/pages/sponsors/show-pages-list-page/__tests__/show-pages-list-page.test.js index 89bbc7ef0..9df2140fc 100644 --- a/src/pages/sponsors/show-pages-list-page/__tests__/show-pages-list-page.test.js +++ b/src/pages/sponsors/show-pages-list-page/__tests__/show-pages-list-page.test.js @@ -41,7 +41,9 @@ jest.mock(
{pageTemplate?.id} - +
); } diff --git a/src/pages/sponsors/show-pages-list-page/index.js b/src/pages/sponsors/show-pages-list-page/index.js index 450652e90..c4f40b5de 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -77,7 +77,14 @@ const ShowPagesListPage = ({ }; const handlePerPageChange = (newPerPage) => { - getShowPages(term, currentPage, newPerPage, order, orderDir, showArchived); + getShowPages( + term, + DEFAULT_CURRENT_PAGE, + newPerPage, + order, + orderDir, + showArchived + ); }; const handleRowDelete = (itemId) => { @@ -99,7 +106,7 @@ const ShowPagesListPage = ({ const handleShowArchivedForms = (ev) => { getShowPages( term, - currentPage, + DEFAULT_CURRENT_PAGE, perPage, order, orderDir, @@ -118,12 +125,17 @@ const ShowPagesListPage = ({ ); }; - const handleSaveShowPage = (entity) => { - saveShowPage(entity).then(() => { - setOpenPopup(null); - getShowPages(); - }); - }; + const handleSaveShowPage = (entity) => + saveShowPage(entity).then(() => + getShowPages( + term, + DEFAULT_CURRENT_PAGE, + perPage, + order, + orderDir, + showArchived + ) + ); const handleOpenPageTemplatePopup = async (row) => { await Promise.all([ diff --git a/src/pages/sponsors/sponsor-list-page.js b/src/pages/sponsors/sponsor-list-page.js index 7b9ee01dd..739919b26 100644 --- a/src/pages/sponsors/sponsor-list-page.js +++ b/src/pages/sponsors/sponsor-list-page.js @@ -69,12 +69,10 @@ const SponsorListPage = ({ deleteSponsor(sponsorId); }; - const handleNewSponsor = (sponsor) => { - addSponsorToSummit(sponsor).then(() => { - setShowAddSponsorModal(false); - getSponsors(term, DEFAULT_CURRENT_PAGE, perPage, order, orderDir); - }); - }; + const handleNewSponsor = (sponsor) => + addSponsorToSummit(sponsor).then(() => + getSponsors(term, DEFAULT_CURRENT_PAGE, perPage, order, orderDir) + ); const handlePageChange = (page) => { getSponsors(term, page, perPage, order, orderDir); @@ -272,7 +270,6 @@ const SponsorListPage = ({ {showAddSponsorModal && ( { + const handleItemSave = (item) => saveSponsorFormManagedItem(formId, item).then(() => { getSponsorCustomizedFormItems( formId, @@ -141,9 +141,7 @@ const SponsorFormsManageItems = ({ showArchived ); resetSponsorFormManagedItem(); - setOpenPopup(null); }); - }; const handleOpenItemPopup = () => { resetSponsorFormManagedItem(); diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js index 287193861..ad50fc03d 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/__tests__/sponsor-pages-tab.test.js @@ -39,7 +39,9 @@ jest.mock(
{pageTemplate?.id} - +
); } diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js index 9a72b86ab..6e2ccce9a 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/components/add-sponsor-page-template-popup/index.js @@ -59,6 +59,7 @@ const AddSponsorPageTemplatePopup = ({ summitId }) => { const [selectedPages, setSelectedPages] = useState([]); + const [isSaving, setIsSaving] = useState(false); const sponsorshipIds = sponsor.sponsorships.map((e) => e.id); @@ -72,12 +73,16 @@ const AddSponsorPageTemplatePopup = ({ add_ons: yup.array() }), onSubmit: (values) => { + if (isSaving) return; + setIsSaving(true); const { add_ons } = values; const entity = { pages: selectedPages, add_ons }; - onSubmit(entity); + onSubmit(entity) + .then(() => onClose()) + .finally(() => setIsSaving(false)); }, enableReinitialize: true }); @@ -140,6 +145,7 @@ const AddSponsorPageTemplatePopup = ({ }; const handleClose = () => { + if (isSaving) return; onClose(); }; @@ -190,12 +196,23 @@ const AddSponsorPageTemplatePopup = ({ ]; return ( - + {T.translate("edit_sponsor.pages_tab.add_page_using_template")} - handleClose()} sx={{ mr: 1 }}> + handleClose()} + sx={{ mr: 1 }} + disabled={isSaving} + > @@ -293,7 +310,7 @@ const AddSponsorPageTemplatePopup = ({
); }; diff --git a/src/pages/sponsorship-types/__tests__/sponsorship-list-page.test.js b/src/pages/sponsorship-types/__tests__/sponsorship-list-page.test.js index f13547ca9..d450d7262 100644 --- a/src/pages/sponsorship-types/__tests__/sponsorship-list-page.test.js +++ b/src/pages/sponsorship-types/__tests__/sponsorship-list-page.test.js @@ -48,7 +48,7 @@ jest.mock(
diff --git a/src/pages/sponsorship-types/components/sponsorship-dialog.js b/src/pages/sponsorship-types/components/sponsorship-dialog.js index dcb093564..fb60052f3 100644 --- a/src/pages/sponsorship-types/components/sponsorship-dialog.js +++ b/src/pages/sponsorship-types/components/sponsorship-dialog.js @@ -1,4 +1,4 @@ -import React from "react"; +import React, { useState } from "react"; import T from "i18n-react/dist/i18n-react"; import PropTypes from "prop-types"; import { FormikProvider, useFormik } from "formik"; @@ -28,12 +28,9 @@ const SIZE_OPTIONS_DDL = [ { label: "Big", value: "Big" } ]; -const SponsorshipDialog = ({ - entity: initialEntity, - onClose, - onSave, - isSaving = false -}) => { +const SponsorshipDialog = ({ entity: initialEntity, onClose, onSave }) => { + const [isSaving, setIsSaving] = useState(false); + const formik = useFormik({ initialValues: { id: initialEntity?.id ?? 0, @@ -45,12 +42,19 @@ const SponsorshipDialog = ({ validationSchema: yup.object().shape({ name: requiredStringValidation() }), - onSubmit: (values) => onSave(values) + onSubmit: (values) => { + if (isSaving) return; + setIsSaving(true); + onSave(values) + .then(() => onClose()) + .finally(() => setIsSaving(false)); + } }); useScrollToError(formik); const handleClose = () => { + if (isSaving) return; formik.resetForm(); onClose(); }; diff --git a/src/pages/sponsorship-types/sponsorship-list-page.js b/src/pages/sponsorship-types/sponsorship-list-page.js index 66854a359..0792fddb9 100644 --- a/src/pages/sponsorship-types/sponsorship-list-page.js +++ b/src/pages/sponsorship-types/sponsorship-list-page.js @@ -44,7 +44,6 @@ const SponsorshipListPage = ({ resetSponsorshipForm }) => { const [open, setOpen] = useState(false); - const [isSaving, setIsSaving] = useState(false); useEffect(() => { getSponsorships(); @@ -76,21 +75,14 @@ const SponsorshipListPage = ({ }; const handleClose = () => { - if (isSaving) return; resetSponsorshipForm(); setOpen(false); }; - const handleSave = (entity) => { - if (isSaving) return; - setIsSaving(true); - saveSponsorship(entity) - .then(() => - getSponsorships(term, DEFAULT_CURRENT_PAGE, perPage, order, orderDir) - ) - .then(() => setOpen(false)) - .finally(() => setIsSaving(false)); - }; + const handleSave = (entity) => + saveSponsorship(entity).then(() => + getSponsorships(term, DEFAULT_CURRENT_PAGE, perPage, order, orderDir) + ); const handleDelete = (sponsorshipId) => { deleteSponsorship(sponsorshipId); @@ -196,7 +188,6 @@ const SponsorshipListPage = ({ entity={currentSponsorship} onSave={handleSave} onClose={handleClose} - isSaving={isSaving} /> )}
diff --git a/src/pages/tags/tag-list-page.js b/src/pages/tags/tag-list-page.js index 498c1bff8..4a4a045b7 100644 --- a/src/pages/tags/tag-list-page.js +++ b/src/pages/tags/tag-list-page.js @@ -75,9 +75,9 @@ const TagListPage = ({ }; const handleSaveTag = (entity) => - saveTag(entity).then(() => { - getTags(search, currentPage, perPage, order, orderDir); - }); + saveTag(entity).then(() => + getTags(search, currentPage, perPage, order, orderDir) + ); const handleDeleteTag = (id) => { deleteTag(id) From 19a9c7233c9eb0615a35c4ceea1d8e722710cdc3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Fri, 19 Jun 2026 18:06:37 -0300 Subject: [PATCH 2/3] fix: add return for actions MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/inventory-item-actions.js | 6 ++---- src/actions/page-template-actions.js | 2 -- src/actions/sponsor-actions.js | 8 ++++---- .../page-templates/page-template-list-page.js | 3 +-- 4 files changed, 7 insertions(+), 12 deletions(-) diff --git a/src/actions/inventory-item-actions.js b/src/actions/inventory-item-actions.js index 45814f39e..f68a5743e 100644 --- a/src/actions/inventory-item-actions.js +++ b/src/actions/inventory-item-actions.js @@ -233,7 +233,7 @@ export const saveInventoryItem = (entity) => async (dispatch) => { promises.push(saveItemMetaFieldTypes(normalizedEntity)(dispatch)); } - Promise.all(promises) + return Promise.all(promises) .then(() => { dispatch( showSuccessMessage( @@ -241,15 +241,13 @@ export const saveInventoryItem = (entity) => async (dispatch) => { ) ); }) - .catch((err) => { - console.error(err); - }) .finally(() => { dispatch(stopLoading()); }); }) .catch((err) => { console.error(err); + throw err; }); } diff --git a/src/actions/page-template-actions.js b/src/actions/page-template-actions.js index ecf7ca78b..c03184510 100644 --- a/src/actions/page-template-actions.js +++ b/src/actions/page-template-actions.js @@ -174,7 +174,6 @@ export const savePageTemplate = (entity) => async (dispatch) => { html: T.translate("page_template_list.page_crud.page_saved") }) ); - getPageTemplates()(dispatch); }) .catch((err) => { console.error(err); @@ -199,7 +198,6 @@ export const savePageTemplate = (entity) => async (dispatch) => { html: T.translate("page_template_list.page_crud.page_created") }) ); - getPageTemplates()(dispatch); }) .catch((err) => { console.error(err); diff --git a/src/actions/sponsor-actions.js b/src/actions/sponsor-actions.js index a955e713b..0e62ba5a2 100644 --- a/src/actions/sponsor-actions.js +++ b/src/actions/sponsor-actions.js @@ -1126,7 +1126,7 @@ export const saveSummitSponsorship = (entity) => async (dispatch, getState) => { const normalizedEntity = normalizeSponsorship(entity); if (entity.id) { - putRequest( + return putRequest( createAction(UPDATE_SUMMIT_SPONSORSHIP), createAction(SUMMIT_SPONSORSHIP_UPDATED), `${window.API_BASE_URL}/api/v1/summits/${currentSummit.id}/sponsorships-types/${entity.id}`, @@ -1138,14 +1138,14 @@ export const saveSummitSponsorship = (entity) => async (dispatch, getState) => { showSuccessMessage(T.translate("edit_sponsorship.sponsorship_saved")) ); }); - } else { + } const success_message = { title: T.translate("general.done"), html: T.translate("edit_sponsorship.sponsorship_created"), type: "success" }; - postRequest( + return postRequest( createAction(UPDATE_SUMMIT_SPONSORSHIP), createAction(SUMMIT_SPONSORSHIP_ADDED), `${window.API_BASE_URL}/api/v1/summits/${currentSummit.id}/sponsorships-types`, @@ -1155,7 +1155,7 @@ export const saveSummitSponsorship = (entity) => async (dispatch, getState) => { )(params)(dispatch).then(() => { dispatch(showMessage(success_message)); }); - } + }; export const uploadSponsorshipBadgeImage = diff --git a/src/pages/sponsors-global/page-templates/page-template-list-page.js b/src/pages/sponsors-global/page-templates/page-template-list-page.js index 64113a3d3..c85dc193a 100644 --- a/src/pages/sponsors-global/page-templates/page-template-list-page.js +++ b/src/pages/sponsors-global/page-templates/page-template-list-page.js @@ -114,7 +114,7 @@ const PageTemplateListPage = ({ setOpenCloneDialog(true); }; - const handleSavePageTemplate = (entity) => { + const handleSavePageTemplate = (entity) => savePageTemplate(entity).then(() => getPageTemplates( term, @@ -125,7 +125,6 @@ const PageTemplateListPage = ({ showArchived ) ); - }; const handleArchive = (item) => item.is_archived From 1344f0c7cdde4cd015ed9a90ec31f361677cac35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Fri, 19 Jun 2026 18:14:37 -0300 Subject: [PATCH 3/3] fix: move stopLoading outisde Promise array MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/inventory-item-actions.js | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/src/actions/inventory-item-actions.js b/src/actions/inventory-item-actions.js index f68a5743e..9473cc98c 100644 --- a/src/actions/inventory-item-actions.js +++ b/src/actions/inventory-item-actions.js @@ -233,21 +233,20 @@ export const saveInventoryItem = (entity) => async (dispatch) => { promises.push(saveItemMetaFieldTypes(normalizedEntity)(dispatch)); } - return Promise.all(promises) - .then(() => { - dispatch( - showSuccessMessage( - T.translate("edit_inventory_item.inventory_item_saved") - ) - ); - }) - .finally(() => { - dispatch(stopLoading()); - }); + return Promise.all(promises).then(() => { + dispatch( + showSuccessMessage( + T.translate("edit_inventory_item.inventory_item_saved") + ) + ); + }); }) .catch((err) => { console.error(err); throw err; + }) + .finally(() => { + dispatch(stopLoading()); }); }