From 379129094016cb362473702a6401141ec476da1a 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/5] 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 | 19 ++-- 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, 263 insertions(+), 161 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 90263fa87..4015d275d 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 @@ -174,7 +174,7 @@ const FormTemplateItemListPage = ({ ); }; - const handleFormTemplateSave = (item) => { + const handleFormTemplateSave = (item) => saveFormTemplateItem(formTemplateId, item).then(() => getFormTemplateItems( formTemplateId, @@ -186,8 +186,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 ec18de994..6d8c2b1de 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -132,20 +132,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 2b1757d51..c4f40b5de 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -106,7 +106,7 @@ const ShowPagesListPage = ({ const handleShowArchivedForms = (ev) => { getShowPages( term, - currentPage, + DEFAULT_CURRENT_PAGE, perPage, order, orderDir, @@ -125,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 27b18cf3e3827a87202b534208aa48f2a9119e91 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/5] 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 0c85483d5..ba4120316 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 3f1d455d0..e84c17051 100644 --- a/src/actions/page-template-actions.js +++ b/src/actions/page-template-actions.js @@ -175,7 +175,6 @@ export const savePageTemplate = (entity) => async (dispatch) => { html: T.translate("page_template_list.page_crud.page_saved") }) ); - getPageTemplates()(dispatch); }) .catch((err) => { console.error(err); @@ -200,7 +199,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 1458aa882..b26f18588 100644 --- a/src/actions/sponsor-actions.js +++ b/src/actions/sponsor-actions.js @@ -1127,7 +1127,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}`, @@ -1139,14 +1139,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`, @@ -1156,7 +1156,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 7521d1c3e47e81d43c2ab18f9b86461759f9575e 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/5] 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 ba4120316..974a10d27 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()); }); } From ec296fffcb983d7a979510b861f1e7e6a1177f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Mon, 13 Jul 2026 09:19:17 -0300 Subject: [PATCH 4/5] fix: adjust code from PR comments 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 | 1 + src/actions/sponsor-actions.js | 34 +++++++++---------- .../form-template-item-list-page.js | 2 +- .../form-templates/form-template-list-page.js | 30 +++++++++------- .../form-templates/form-template-popup.js | 4 +-- .../form-templates/sponsor-inventory-popup.js | 3 +- .../inventory/inventory-list-page.js | 2 +- .../page-templates/page-template-list-page.js | 2 +- .../page-template-popup/index.js | 2 ++ src/pages/sponsors/popup/add-sponsor-popup.js | 1 + src/pages/sponsors/popup/edit-tier-popup.js | 1 + .../sponsors/show-pages-list-page/index.js | 2 +- src/pages/sponsors/sponsor-list-page.js | 4 ++- .../sponsor-forms-manage-items.js | 2 +- .../add-sponsor-page-template-popup/index.js | 1 + .../tabs/sponsor-pages-tab/index.js | 8 ++--- .../sponsors/summit-sponsorship-list-page.js | 3 +- .../components/sponsorship-dialog.js | 1 + .../sponsorship-list-page.js | 8 ++++- src/pages/tags/tag-list-page.js | 2 +- 20 files changed, 66 insertions(+), 47 deletions(-) diff --git a/src/actions/inventory-item-actions.js b/src/actions/inventory-item-actions.js index 974a10d27..374750771 100644 --- a/src/actions/inventory-item-actions.js +++ b/src/actions/inventory-item-actions.js @@ -286,6 +286,7 @@ export const saveInventoryItem = (entity) => async (dispatch) => { }) .catch((err) => { console.error(err); + throw err; }) .finally(() => { dispatch(stopLoading()); diff --git a/src/actions/sponsor-actions.js b/src/actions/sponsor-actions.js index b26f18588..f4bf3ac38 100644 --- a/src/actions/sponsor-actions.js +++ b/src/actions/sponsor-actions.js @@ -1139,24 +1139,24 @@ export const saveSummitSponsorship = (entity) => async (dispatch, getState) => { showSuccessMessage(T.translate("edit_sponsorship.sponsorship_saved")) ); }); - } - const success_message = { - title: T.translate("general.done"), - html: T.translate("edit_sponsorship.sponsorship_created"), - type: "success" - }; + } - return postRequest( - createAction(UPDATE_SUMMIT_SPONSORSHIP), - createAction(SUMMIT_SPONSORSHIP_ADDED), - `${window.API_BASE_URL}/api/v1/summits/${currentSummit.id}/sponsorships-types`, - normalizedEntity, - authErrorHandler, - entity - )(params)(dispatch).then(() => { - dispatch(showMessage(success_message)); - }); - + const success_message = { + title: T.translate("general.done"), + html: T.translate("edit_sponsorship.sponsorship_created"), + type: "success" + }; + + return postRequest( + createAction(UPDATE_SUMMIT_SPONSORSHIP), + createAction(SUMMIT_SPONSORSHIP_ADDED), + `${window.API_BASE_URL}/api/v1/summits/${currentSummit.id}/sponsorships-types`, + normalizedEntity, + authErrorHandler, + entity + )(params)(dispatch).then(() => { + dispatch(showMessage(success_message)); + }); }; export const uploadSponsorshipBadgeImage = 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 4015d275d..b14752eed 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 @@ -184,7 +184,7 @@ const FormTemplateItemListPage = ({ order, orderDir, showArchived - ) + ).catch(() => {}) ); 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 8c42901c4..c0d0e969d 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 @@ -139,6 +139,11 @@ const FormTemplateListPage = ({ setFormTemplateFromDuplicatePopupOpen(false); }; + const handleCloseFormTemplateDialog = () => { + resetFormTemplateForm(); + setFormTemplatePopupOpen(false); + }; + const handleDuplicatePopupClose = () => { getFormTemplates( "", @@ -221,7 +226,7 @@ const FormTemplateListPage = ({ order, orderDir, showArchived - ) + ).catch(() => {}) ); return ( @@ -330,17 +335,18 @@ const FormTemplateListPage = ({ /> )} - setFormTemplatePopupOpen(false)} - onMetaFieldTypeDeleted={deleteFormTemplateMetaFieldType} - onMetaFieldTypeValueDeleted={deleteFormTemplateMetaFieldTypeValue} - onMaterialDeleted={deleteFormTemplateMaterial} - /> + {formTemplatePopupOpen && ( + + )} onClose()) + .catch(() => {}) .finally(() => setIsSaving(false)); } }); diff --git a/src/pages/sponsors-global/inventory/inventory-list-page.js b/src/pages/sponsors-global/inventory/inventory-list-page.js index 6d8c2b1de..c497ea7bc 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -141,7 +141,7 @@ const InventoryListPage = ({ order, orderDir, showArchived - ) + ).catch(() => {}) ); const handleArchiveItem = (item) => 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 c85dc193a..d3bf33de6 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 @@ -123,7 +123,7 @@ const PageTemplateListPage = ({ order, orderDir, showArchived - ) + ).catch(() => {}) ); 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 82987ca66..d4a374cc9 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 @@ -130,6 +130,7 @@ const PageTemplatePopup = ({ }), modules: yup.array().of(moduleSchema) }), + enableReinitialize: true, onSubmit: (values) => { if (isSaving) return; setIsSaving(true); @@ -140,6 +141,7 @@ const PageTemplatePopup = ({ onSave({ ...values, modules: modulesWithOrder }) .then(() => onClose()) + .catch(() => {}) .finally(() => setIsSaving(false)); } }); diff --git a/src/pages/sponsors/popup/add-sponsor-popup.js b/src/pages/sponsors/popup/add-sponsor-popup.js index 75011f32a..0e9054e38 100644 --- a/src/pages/sponsors/popup/add-sponsor-popup.js +++ b/src/pages/sponsors/popup/add-sponsor-popup.js @@ -58,6 +58,7 @@ const AddSponsorDialog = ({ onClose, onSubmit, summitId }) => { setIsSaving(true); onSubmit(values) .then(() => onClose()) + .catch(() => {}) .finally(() => setIsSaving(false)); }, enableReinitialize: true diff --git a/src/pages/sponsors/popup/edit-tier-popup.js b/src/pages/sponsors/popup/edit-tier-popup.js index def72c1ae..cb4452fa4 100644 --- a/src/pages/sponsors/popup/edit-tier-popup.js +++ b/src/pages/sponsors/popup/edit-tier-popup.js @@ -75,6 +75,7 @@ const EditTierDialog = ({ setIsSaving(true); onSubmit(values) .then(() => onClose()) + .catch(() => {}) .finally(() => setIsSaving(false)); }, enableReinitialize: true diff --git a/src/pages/sponsors/show-pages-list-page/index.js b/src/pages/sponsors/show-pages-list-page/index.js index c4f40b5de..5eb64f82d 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -134,7 +134,7 @@ const ShowPagesListPage = ({ order, orderDir, showArchived - ) + ).catch(() => {}) ); const handleOpenPageTemplatePopup = async (row) => { diff --git a/src/pages/sponsors/sponsor-list-page.js b/src/pages/sponsors/sponsor-list-page.js index 739919b26..9bc7d95f8 100644 --- a/src/pages/sponsors/sponsor-list-page.js +++ b/src/pages/sponsors/sponsor-list-page.js @@ -71,7 +71,9 @@ const SponsorListPage = ({ const handleNewSponsor = (sponsor) => addSponsorToSummit(sponsor).then(() => - getSponsors(term, DEFAULT_CURRENT_PAGE, perPage, order, orderDir) + getSponsors(term, DEFAULT_CURRENT_PAGE, perPage, order, orderDir).catch( + () => {} + ) ); const handlePageChange = (page) => { diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-forms-manage-items.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-forms-manage-items.js index ee964e236..72557182f 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-forms-manage-items.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/manage-items/sponsor-forms-manage-items.js @@ -139,7 +139,7 @@ const SponsorFormsManageItems = ({ order, orderDir, showArchived - ); + ).catch(() => {}); resetSponsorFormManagedItem(); }); 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 6e2ccce9a..90cf133cd 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 @@ -82,6 +82,7 @@ const AddSponsorPageTemplatePopup = ({ }; onSubmit(entity) .then(() => onClose()) + .catch(() => {}) .finally(() => setIsSaving(false)); }, enableReinitialize: true diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js index 6128af23e..a87b345b6 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js @@ -258,7 +258,7 @@ const SponsorPagesTab = ({ order, orderDir, showArchived - ); + ).catch(() => {}); }); const handleSaveCustomizedPage = (entity) => @@ -271,7 +271,7 @@ const SponsorPagesTab = ({ order, orderDir, showArchived - ); + ).catch(() => {}); }); const handleSaveManagedPage = (entity) => @@ -283,7 +283,7 @@ const SponsorPagesTab = ({ managedPages.order, managedPages.orderDir, showArchived - ); + ).catch(() => {}); getSponsorCustomizedPages( term, DEFAULT_CURRENT_PAGE, @@ -291,7 +291,7 @@ const SponsorPagesTab = ({ customizedPages.order, customizedPages.orderDir, showArchived - ); + ).catch(() => {}); }); const handleClosePagePopup = () => { diff --git a/src/pages/sponsors/summit-sponsorship-list-page.js b/src/pages/sponsors/summit-sponsorship-list-page.js index 365fdab58..f043f6cf5 100644 --- a/src/pages/sponsors/summit-sponsorship-list-page.js +++ b/src/pages/sponsors/summit-sponsorship-list-page.js @@ -95,11 +95,10 @@ const SummitSponsorshipListPage = ({ updateSummitSponsorhipOrder(newOrder, itemId, newItemOrder); }; - const handleSaveSummitSponsorship = (sponsorship) => { + const handleSaveSummitSponsorship = (sponsorship) => saveSummitSponsorship(sponsorship).then(() => getSummitSponsorships(DEFAULT_CURRENT_PAGE, perPage, order, orderDir) ); - }; const columns = [ { diff --git a/src/pages/sponsorship-types/components/sponsorship-dialog.js b/src/pages/sponsorship-types/components/sponsorship-dialog.js index fb60052f3..737a88aef 100644 --- a/src/pages/sponsorship-types/components/sponsorship-dialog.js +++ b/src/pages/sponsorship-types/components/sponsorship-dialog.js @@ -47,6 +47,7 @@ const SponsorshipDialog = ({ entity: initialEntity, onClose, onSave }) => { setIsSaving(true); onSave(values) .then(() => onClose()) + .catch(() => {}) .finally(() => setIsSaving(false)); } }); diff --git a/src/pages/sponsorship-types/sponsorship-list-page.js b/src/pages/sponsorship-types/sponsorship-list-page.js index 0792fddb9..3004bc7ec 100644 --- a/src/pages/sponsorship-types/sponsorship-list-page.js +++ b/src/pages/sponsorship-types/sponsorship-list-page.js @@ -81,7 +81,13 @@ const SponsorshipListPage = ({ const handleSave = (entity) => saveSponsorship(entity).then(() => - getSponsorships(term, DEFAULT_CURRENT_PAGE, perPage, order, orderDir) + getSponsorships( + term, + DEFAULT_CURRENT_PAGE, + perPage, + order, + orderDir + ).catch(() => {}) ); const handleDelete = (sponsorshipId) => { diff --git a/src/pages/tags/tag-list-page.js b/src/pages/tags/tag-list-page.js index 4a4a045b7..0e4155652 100644 --- a/src/pages/tags/tag-list-page.js +++ b/src/pages/tags/tag-list-page.js @@ -76,7 +76,7 @@ const TagListPage = ({ const handleSaveTag = (entity) => saveTag(entity).then(() => - getTags(search, currentPage, perPage, order, orderDir) + getTags(search, currentPage, perPage, order, orderDir).catch(() => {}) ); const handleDeleteTag = (id) => { From ecb120ed0348ccebeee52dc3ab857c20f5a14d52 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Mon, 13 Jul 2026 09:55:35 -0300 Subject: [PATCH 5/5] fix: clear open prop from dialogs, update test cases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .../form-template-from-duplicate-popup.js | 4 +- .../form-templates/form-template-list-page.js | 29 +++--- .../__tests__/show-pages-list-page.test.js | 2 +- .../__test__/inventory-popup.test.js | 96 ++++++++----------- ...nsor-form-add-item-from-inventory-popup.js | 4 +- .../components/sponsor-form-item-popup.js | 4 +- .../sponsor-form-item-list-page/index.js | 22 +++-- .../form-template/form-template-popup.js | 4 +- .../global-template/global-template-popup.js | 5 +- .../sponsors/sponsor-forms-list-page/index.js | 18 ++-- .../edit-badge-scan-popup.js | 5 +- .../tabs/sponsor-badge-scans/index.js | 1 - .../__tests__/select-form-dialog.test.js | 11 --- .../components/select-form-dialog/index.js | 9 +- .../tabs/sponsor-cart-tab/index.js | 15 +-- .../__tests__/customized-form-popup.test.js | 3 - .../customized-form/customized-form-popup.js | 4 +- .../tabs/sponsor-forms-tab/index.js | 19 ++-- .../add-extra-question-popup.js | 4 +- .../sponsor-general-form/add-tier-popup.js | 5 +- .../sponsor-general-form/extra-questions.js | 1 - .../manage-tier-addons-popup.js | 4 +- .../tabs/sponsor-general-form/sponsorship.js | 2 - .../__tests__/sponsor-pages-tab.test.js | 4 +- .../components/import-users-popup.js | 3 +- .../components/new-user-popup.js | 4 +- .../components/process-request-popup.js | 3 +- .../sponsor-users-list-per-sponsor/index.js | 3 - 28 files changed, 118 insertions(+), 170 deletions(-) diff --git a/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js b/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js index f76fc6528..17b79a843 100644 --- a/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js +++ b/src/pages/sponsors-global/form-templates/form-template-from-duplicate-popup.js @@ -22,7 +22,6 @@ import SearchInput from "openstack-uicore-foundation/lib/components/mui/search-i import MenuButton from "../../../components/mui/menu-button"; const FormTemplateFromDuplicateDialog = ({ - open, options, onClose, onDuplicate, @@ -94,7 +93,7 @@ const FormTemplateFromDuplicateDialog = ({ ]; return ( - + {T.translate("form_template_from_duplicate_dialog.duplicate_form")} @@ -176,7 +175,6 @@ const FormTemplateFromDuplicateDialog = ({ }; FormTemplateFromDuplicateDialog.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onDuplicate: PropTypes.func.isRequired, onSearch: PropTypes.func.isRequired, 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 c0d0e969d..b6d0f1cbe 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 @@ -347,20 +347,21 @@ const FormTemplateListPage = ({ onMaterialDeleted={deleteFormTemplateMaterial} /> )} - + {formTemplateFromDuplicatePopupOpen && ( + + )} ); }; 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 9df2140fc..4ada962ec 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 @@ -51,7 +51,7 @@ jest.mock( jest.mock("../../../../actions/show-pages-actions", () => ({ ...jest.requireActual("../../../../actions/show-pages-actions"), - getShowPages: jest.fn(() => ({ type: "MOCK_ACTION" })), + getShowPages: jest.fn(() => () => Promise.resolve()), getShowPage: jest.fn( () => () => Promise.resolve({ id: 1, name: "Test Page" }) ), diff --git a/src/pages/sponsors/sponsor-form-item-list-page/components/__test__/inventory-popup.test.js b/src/pages/sponsors/sponsor-form-item-list-page/components/__test__/inventory-popup.test.js index f602a371c..5c10d6b43 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/components/__test__/inventory-popup.test.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/components/__test__/inventory-popup.test.js @@ -45,7 +45,6 @@ jest.mock("openstack-uicore-foundation/lib/utils/money", () => ({ describe("InventoryPopup", () => { it("check if title is being rendered", async () => { const formId = "AAA"; - const open = true; const onClose = jest.fn(); const inventoryItems = { @@ -58,16 +57,13 @@ describe("InventoryPopup", () => { totalInventoryItems: 2 }; - renderWithRedux( - , - { - initialState: { - currentInventoryItemListState: { - inventoryItems - } + renderWithRedux(, { + initialState: { + currentInventoryItemListState: { + inventoryItems } } - ); + }); const node = screen.getByText( "sponsor_form_item_list.add_from_inventory.title" @@ -79,7 +75,6 @@ describe("InventoryPopup", () => { it("check if close button calls close callback", async () => { const formId = "AAA"; - const open = true; const onClose = jest.fn(); const inventoryItems = { @@ -92,16 +87,13 @@ describe("InventoryPopup", () => { totalInventoryItems: 2 }; - renderWithRedux( - , - { - initialState: { - currentInventoryItemListState: { - inventoryItems - } + renderWithRedux(, { + initialState: { + currentInventoryItemListState: { + inventoryItems } } - ); + }); const user = userEvent.setup(); const node = screen.getByTestId("close-dialog"); @@ -112,46 +104,42 @@ describe("InventoryPopup", () => { it("check if close button clears selected rows", async () => { const formId = "AAA"; - const open = true; const onClose = jest.fn(); - renderWithRedux( - , - { - initialState: { - currentInventoryItemListState: { - inventoryItems: [ - { - id: "123", - code: "AAA", - name: "My Item", - early_bird_rate: "100", - standard_rate: "100", - onsite_rate: "100", - hasImage: false, - images: [] - }, - { - id: "456", - code: "AAAA", - name: "My Item", - early_bird_rate: "100", - standard_rate: "100", - onsite_rate: "100", - hasImage: false, - images: [] - } - ], - term: "", - order: "", - orderDir: "1", - currentPage: 1, - perPage: 10, - totalInventoryItems: 2 - } + renderWithRedux(, { + initialState: { + currentInventoryItemListState: { + inventoryItems: [ + { + id: "123", + code: "AAA", + name: "My Item", + early_bird_rate: "100", + standard_rate: "100", + onsite_rate: "100", + hasImage: false, + images: [] + }, + { + id: "456", + code: "AAAA", + name: "My Item", + early_bird_rate: "100", + standard_rate: "100", + onsite_rate: "100", + hasImage: false, + images: [] + } + ], + term: "", + order: "", + orderDir: "1", + currentPage: 1, + perPage: 10, + totalInventoryItems: 2 } } - ); + }); const user = userEvent.setup(); diff --git a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-add-item-from-inventory-popup.js b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-add-item-from-inventory-popup.js index b2e980d8a..9d71f90a7 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-add-item-from-inventory-popup.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-add-item-from-inventory-popup.js @@ -27,7 +27,6 @@ import { DEFAULT_CURRENT_PAGE } from "../../../../utils/constants"; const SponsorFormAddItemFromInventoryPopup = ({ formId, - open, onClose, addInventoryItems, getInventoryItems, @@ -161,7 +160,7 @@ const SponsorFormAddItemFromInventoryPopup = ({ ]; return ( - + + )} - setOpenPopup(null)} - /> - setOpenPopup(null)} - /> + {openPopup === "crud" && ( + setOpenPopup(null)} + /> + )} + {openPopup === "inventory" && ( + setOpenPopup(null)} + /> + )} ); }; diff --git a/src/pages/sponsors/sponsor-forms-list-page/components/form-template/form-template-popup.js b/src/pages/sponsors/sponsor-forms-list-page/components/form-template/form-template-popup.js index 964104c19..916e52f8e 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/components/form-template/form-template-popup.js +++ b/src/pages/sponsors/sponsor-forms-list-page/components/form-template/form-template-popup.js @@ -23,7 +23,6 @@ const FormTemplatePopup = ({ summitTZ, sponsorships, formTemplate, - open, onClose, getSummitSponsorshipTypes, resetFormTemplate, @@ -67,7 +66,7 @@ const FormTemplatePopup = ({ return ( { handleClose(); }} @@ -111,7 +110,6 @@ const FormTemplatePopup = ({ }; FormTemplatePopup.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, edit: PropTypes.bool.isRequired }; diff --git a/src/pages/sponsors/sponsor-forms-list-page/components/global-template/global-template-popup.js b/src/pages/sponsors/sponsor-forms-list-page/components/global-template/global-template-popup.js index 9058f366c..72ae3e6c3 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/components/global-template/global-template-popup.js +++ b/src/pages/sponsors/sponsor-forms-list-page/components/global-template/global-template-popup.js @@ -6,7 +6,7 @@ import { cloneGlobalTemplate } from "../../../../../actions/sponsor-forms-action import SelectTemplatesDialog from "./select-templates-dialog"; import SelectSponsorshipsDialog from "./select-sponsorships-dialog"; -const GlobalTemplatePopup = ({ open, onClose, cloneGlobalTemplate }) => { +const GlobalTemplatePopup = ({ onClose, cloneGlobalTemplate }) => { const [stage, setStage] = useState("templates"); const [selectedTemplates, setSelectedTemplates] = useState([]); const [isSaving, setIsSaving] = useState(false); @@ -45,7 +45,7 @@ const GlobalTemplatePopup = ({ open, onClose, cloneGlobalTemplate }) => { return ( { }; GlobalTemplatePopup.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired }; diff --git a/src/pages/sponsors/sponsor-forms-list-page/index.js b/src/pages/sponsors/sponsor-forms-list-page/index.js index 0c7d3e6ac..dc1cabe4d 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -432,15 +432,15 @@ const SponsorFormsListPage = ({ /> )} - setOpenPopup(null)} - /> - setOpenPopup(null)} - edit={openPopup === "edit"} - /> + {openPopup === "clone" && ( + setOpenPopup(null)} /> + )} + {(openPopup === "new" || openPopup === "edit") && ( + setOpenPopup(null)} + edit={openPopup === "edit"} + /> + )} ); }; diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/edit-badge-scan-popup.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/edit-badge-scan-popup.js index b56dbcf2b..9c0f5a967 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/edit-badge-scan-popup.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/edit-badge-scan-popup.js @@ -38,7 +38,7 @@ const formatExtraQuestions = (extraQuestions, sponsorQuestions) => { return values; }; -const EditBadgeScanPopup = ({ badgeScan, open, onClose, onSubmit }) => { +const EditBadgeScanPopup = ({ badgeScan, onClose, onSubmit }) => { const formik = useFormik({ initialValues: { id: badgeScan.id, @@ -111,7 +111,7 @@ const EditBadgeScanPopup = ({ badgeScan, open, onClose, onSubmit }) => { }, [formik.values]); return ( - + {T.translate("edit_badge_scan.edit_badge_scan")} @@ -218,7 +218,6 @@ const EditBadgeScanPopup = ({ badgeScan, open, onClose, onSubmit }) => { }; EditBadgeScanPopup.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onSubmit: PropTypes.func.isRequired }; diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js index 7b9699c1a..b85c38f95 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-badge-scans/index.js @@ -244,7 +244,6 @@ const SponsorBadgeScans = ({ {showEditBadgeScanPopup && ( diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/__tests__/select-form-dialog.test.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/__tests__/select-form-dialog.test.js index 298658f7f..bbc6efcda 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/__tests__/select-form-dialog.test.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/__tests__/select-form-dialog.test.js @@ -157,7 +157,6 @@ const renderWithStore = (props, storeState = {}) => { const store = mockStore(defaultState); const defaultProps = { - open: true, summitId: 1, sponsor: { id: 10, name: "Test Sponsor" }, onClose: jest.fn(), @@ -197,16 +196,6 @@ describe("SelectFormDialog", () => { expect(getSponsorFormsForCart).toHaveBeenCalled(); }); - test("does not call getSponsorFormsForCart when dialog is closed", () => { - const { - getSponsorFormsForCart - } = require("../../../../../../../../actions/sponsor-cart-actions"); - - renderWithStore({ open: false }); - - expect(getSponsorFormsForCart).not.toHaveBeenCalled(); - }); - test("displays initial selection count as 0", () => { renderWithStore(); diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/index.js index 8b4631380..2d9c2fdd2 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-cart-tab/components/select-form-dialog/index.js @@ -26,7 +26,6 @@ const SelectFormDialog = ({ availableForms, summitId, sponsor, - open, onSave, onClose, getSponsorFormsForCart @@ -36,10 +35,8 @@ const SelectFormDialog = ({ const { forms, currentPage, term, order, orderDir, total } = availableForms; useEffect(() => { - if (open) { - getSponsorFormsForCart(); - } - }, [open]); + getSponsorFormsForCart(); + }, []); const handleSort = (key, dir) => { getSponsorFormsForCart(term, 1, key, dir); @@ -110,7 +107,7 @@ const SelectFormDialog = ({ ]; return ( - + { )} - setOpenAddFormDialog(false)} - /> + {!!openAddFormDialog && ( + setOpenAddFormDialog(false)} + /> + )} )} /> diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/__tests__/customized-form-popup.test.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/__tests__/customized-form-popup.test.js index 036ca9781..42cacff58 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/__tests__/customized-form-popup.test.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/__tests__/customized-form-popup.test.js @@ -66,7 +66,6 @@ describe("CustomizedFormPopup", () => { renderWithRedux( { renderWithRedux( { renderWithRedux( )} - + {!!customFormEdit && ( + + )} ); }; diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/add-extra-question-popup.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/add-extra-question-popup.js index 5b3c04c00..a1083be38 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/add-extra-question-popup.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/add-extra-question-popup.js @@ -39,7 +39,6 @@ import { ExtraQuestionsTypeAllowSubQuestion } from "../../../../../utils/constan const AddSponsorExtraQuestionPopup = ({ entity: extraQuestion, summit, - open, onClose, onSubmit, allClasses, @@ -296,7 +295,7 @@ const AddSponsorExtraQuestionPopup = ({ : []; return ( - + {extraQuestion.id @@ -655,7 +654,6 @@ const mapStateToProps = ({ currentSponsorExtraQuestionState }) => ({ }); AddSponsorExtraQuestionPopup.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onSubmit: PropTypes.func.isRequired }; diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/add-tier-popup.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/add-tier-popup.js index fbf6d6d5d..6cbf069c4 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/add-tier-popup.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/add-tier-popup.js @@ -23,7 +23,7 @@ import useScrollToError from "../../../../../hooks/useScrollToError"; import SponsorshipsBySummitSelectMUI from "../../../../../components/mui/formik-inputs/sponsorship-summit-select-mui"; import MuiFormikTextField from "../../../../../components/mui/formik-inputs/mui-formik-textfield"; -const AddTierPopup = ({ sponsor, open, onClose, onSubmit, summitId }) => { +const AddTierPopup = ({ sponsor, onClose, onSubmit, summitId }) => { const formik = useFormik({ initialValues: { company: sponsor.company?.name, @@ -68,7 +68,7 @@ const AddTierPopup = ({ sponsor, open, onClose, onSubmit, summitId }) => { }, [formik.values]); return ( - + {T.translate("edit_sponsor.add_tier")} @@ -147,7 +147,6 @@ const AddTierPopup = ({ sponsor, open, onClose, onSubmit, summitId }) => { }; AddTierPopup.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onSubmit: PropTypes.func.isRequired, summitId: PropTypes.number.isRequired diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/extra-questions.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/extra-questions.js index 6fa3703f6..62da352bf 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/extra-questions.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/extra-questions.js @@ -209,7 +209,6 @@ const SponsorExtraQuestions = ({ {showAddExtraQuestionPopup && ( + {T.translate("edit_sponsor.manage_addons")} @@ -396,7 +395,6 @@ const ManageTierAddonsPopup = ({ }; ManageTierAddonsPopup.propTypes = { - open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onSubmit: PropTypes.func.isRequired, onSponsorshipAddonRemove: PropTypes.func.isRequired, diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/sponsorship.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/sponsorship.js index 2b3ccbd75..5a966b761 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/sponsorship.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-general-form/sponsorship.js @@ -174,7 +174,6 @@ const Sponsorship = ({ @@ -184,7 +183,6 @@ const Sponsorship = ({ ({ ...jest.requireActual("../../../../../../actions/sponsor-pages-actions"), - getSponsorManagedPages: jest.fn(() => ({ type: "MOCK_ACTION" })), - getSponsorCustomizedPages: jest.fn(() => ({ type: "MOCK_ACTION" })), + getSponsorManagedPages: jest.fn(() => () => Promise.resolve()), + getSponsorCustomizedPages: jest.fn(() => () => Promise.resolve()), getSponsorCustomizedPage: jest.fn( () => () => Promise.resolve({ id: 1, name: "Test Page" }) ), diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-users-list-per-sponsor/components/import-users-popup.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-users-list-per-sponsor/components/import-users-popup.js index 3a6f8259d..e5e6aaa0e 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-users-list-per-sponsor/components/import-users-popup.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-users-list-per-sponsor/components/import-users-popup.js @@ -22,7 +22,6 @@ import { } from "../../../../../../actions/sponsor-users-actions"; const ImportUsersPopup = ({ - open, currentSummit, sponsorId, companyId, @@ -87,7 +86,7 @@ const ImportUsersPopup = ({ }; return ( - + + + setOpenPopup(null)} sponsorId={sponsor.id} /> @@ -162,7 +161,6 @@ const SponsorUsersListPerSponsorPage = ({ {openPopup === "access_request" && ( setOpenPopup(null)} requests={requests} sponsorId={sponsor.id} @@ -172,7 +170,6 @@ const SponsorUsersListPerSponsorPage = ({ {openPopup === "import" && ( setOpenPopup(null)} sponsorId={sponsor.id} companyId={sponsor.company?.id}