From beabf0409fab284b3e7779dda495f5143cb097b7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Mon, 20 Apr 2026 18:22:13 -0300 Subject: [PATCH] feat: WIP allow to upgrade manage forms to customized MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/actions/sponsor-forms-actions.js | 61 +++++++++++++++++++ .../customized-form/customized-form-popup.js | 17 +++++- .../tabs/sponsor-forms-tab/index.js | 31 +++++++++- .../tabs/sponsor-pages-tab/index.js | 3 +- 4 files changed, 105 insertions(+), 7 deletions(-) diff --git a/src/actions/sponsor-forms-actions.js b/src/actions/sponsor-forms-actions.js index b148c21bf..ec8f8825f 100644 --- a/src/actions/sponsor-forms-actions.js +++ b/src/actions/sponsor-forms-actions.js @@ -51,7 +51,10 @@ export const RESET_TEMPLATE_FORM = "RESET_TEMPLATE_FORM"; export const REQUEST_SPONSOR_MANAGED_FORMS = "REQUEST_SPONSOR_MANAGED_FORMS"; export const RECEIVE_SPONSOR_MANAGED_FORMS = "RECEIVE_SPONSOR_MANAGED_FORMS"; +export const REQUEST_SPONSOR_MANAGED_FORM = "REQUEST_SPONSOR_MANAGED_FORM"; +export const RECEIVE_SPONSOR_MANAGED_FORM = "RECEIVE_SPONSOR_MANAGED_FORM"; export const SPONSOR_MANAGED_FORMS_ADDED = "SPONSOR_MANAGED_FORMS_ADDED"; +export const SPONSOR_MANAGED_FORMS_UPGRADED = "SPONSOR_MANAGED_FORMS_UPGRADED"; export const REQUEST_SPONSOR_CUSTOMIZED_FORMS = "REQUEST_SPONSOR_CUSTOMIZED_FORMS"; @@ -616,6 +619,37 @@ export const saveSponsorManagedForm = }); }; +export const upgradeSponsorManagedForm = + (entity) => async (dispatch, getState) => { + const { currentSummitState, currentSponsorState } = getState(); + const { currentSummit } = currentSummitState; + const { + entity: { id: sponsorId } + } = currentSponsorState; + const accessToken = await getAccessTokenSafely(); + + dispatch(startLoading()); + + const normalizedEntity = normalizeSponsorCustomizedForm(entity); + + const params = { + access_token: accessToken, + fields: + "id,code,name,is_archived,opens_at,expires_at,items_count,allowed_add_ons", + relations: "allowed_add_ons" + }; + + return putRequest( + null, + createAction(SPONSOR_MANAGED_FORMS_UPGRADED), + `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsorId}/managed-forms/${entity.id}`, + normalizedEntity, + snackbarErrorHandler + )(params)(dispatch).then(() => { + dispatch(stopLoading()); + }); + }; + const normalizeSponsorManagedForm = (entity) => { const normalizedEntity = { show_form_ids: entity.forms, @@ -629,6 +663,31 @@ const normalizeSponsorManagedForm = (entity) => { return normalizedEntity; }; +export const getSponsorManagedForm = (formId) => async (dispatch, getState) => { + const { currentSummitState } = getState(); + const { currentSummit } = currentSummitState; + const accessToken = await getAccessTokenSafely(); + + dispatch(startLoading()); + + const params = { + fields: + "id,code,name,is_archived,opens_at,expires_at,items_count,allowed_add_ons", + expand: + "allowed_add_ons,meta_fields,meta_fields.values,items,items.meta_fields,items.meta_fields.values,items.images", + access_token: accessToken + }; + + return getRequest( + null, + createAction(RECEIVE_SPONSOR_CUSTOMIZED_FORM), + `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms/${formId}`, + snackbarErrorHandler + )(params)(dispatch).then(() => { + dispatch(stopLoading()); + }); +}; + /* ************************************************************************ */ /* CUSTOMIZED FORMS */ /* ************************************************************************ */ @@ -891,6 +950,8 @@ export const normalizeSponsorCustomizedForm = (entity, summitTZ) => { normalizedEntity.meta_fields = meta_fields.filter((mf) => !!mf.name); + delete normalizedEntity.sponsorship_types; + return normalizedEntity; }; diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/customized-form-popup.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/customized-form-popup.js index 3f46ff4f0..479e3b46a 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/customized-form-popup.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/components/customized-form/customized-form-popup.js @@ -12,6 +12,8 @@ import { import CloseIcon from "@mui/icons-material/Close"; import { getSponsorCustomizedForm, + getSponsorManagedForm, + upgradeSponsorManagedForm, resetSponsorCustomizedForm, saveSponsorCustomizedForm, updateSponsorCustomizedForm @@ -24,11 +26,14 @@ const CustomizedFormPopup = ({ sponsor, summitId, summitTZ, + upgradeManaged, open, onClose, onSaved, getSponsorCustomizedForm, + getSponsorManagedForm, resetSponsorCustomizedForm, + upgradeSponsorManagedForm, saveSponsorCustomizedForm, updateSponsorCustomizedForm }) => { @@ -47,7 +52,9 @@ const CustomizedFormPopup = ({ const handleOnSave = (values) => { if (isSaving) return; - const save = values.id + const save = upgradeManaged + ? upgradeSponsorManagedForm + : values.id ? updateSponsorCustomizedForm : saveSponsorCustomizedForm; setIsSaving(true); @@ -67,7 +74,11 @@ const CustomizedFormPopup = ({ useEffect(() => { if (formId) { - getSponsorCustomizedForm(formId); + if (upgradeManaged) { + getSponsorManagedForm(formId); + } else { + getSponsorCustomizedForm(formId); + } } }, [formId]); @@ -125,6 +136,8 @@ const mapStateToProps = ({ export default connect(mapStateToProps, { resetSponsorCustomizedForm, getSponsorCustomizedForm, + getSponsorManagedForm, + upgradeSponsorManagedForm, saveSponsorCustomizedForm, updateSponsorCustomizedForm })(CustomizedFormPopup); diff --git a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js index d3938ccd7..cdcb2d38a 100644 --- a/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js +++ b/src/pages/sponsors/sponsor-page/tabs/sponsor-forms-tab/index.js @@ -56,6 +56,7 @@ const SponsorFormsTab = ({ }) => { const [openPopup, setOpenPopup] = useState(null); const [customFormEdit, setCustomFormEdit] = useState(null); + const [upgradeManaged, setUpgradeManaged] = useState(false); useEffect(() => { getSponsorManagedForms(); @@ -102,7 +103,8 @@ const SponsorFormsTab = ({ }; const handleCustomizeForm = (item) => { - console.log("CUSTOMIZE : ", item); + setUpgradeManaged(true); + setCustomFormEdit(item); }; const handleArchiveForm = (item) => @@ -157,7 +159,8 @@ const SponsorFormsTab = ({ ); }; - const handleSaveFormFromTemplate = (entity) => saveSponsorManagedForm(entity).then(() => { + const handleSaveFormFromTemplate = (entity) => + saveSponsorManagedForm(entity).then(() => { const { perPage, order, orderDir } = managedForms; getSponsorManagedForms( term, @@ -187,6 +190,27 @@ const SponsorFormsTab = ({ ); }; + const handleCloseCustomizedPopup = () => { + setCustomFormEdit(null); + setUpgradeManaged(false); + getSponsorManagedForms( + term, + DEFAULT_CURRENT_PAGE, + managedForms.perPage, + managedForms.order, + managedForms.orderDir, + hideArchived + ); + getSponsorCustomizedForms( + term, + DEFAULT_CURRENT_PAGE, + customizedForms.perPage, + customizedForms.order, + customizedForms.orderDir, + hideArchived + ); + }; + const baseColumns = (name, manageItemsFn) => [ { columnKey: "name", @@ -399,7 +423,8 @@ const SponsorFormsTab = ({ setCustomFormEdit(null)} + upgradeManaged={upgradeManaged} + onClose={handleCloseCustomizedPopup} onSaved={handleCustomizedFormSaved} sponsor={sponsor} summitId={currentSummit.id} 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 b31032fd8..3adb51fe0 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 @@ -34,7 +34,7 @@ import { deleteSponsorManagedPage, unarchiveCustomizedPage, archiveCustomizedPage, - resetSponsorPage, + resetSponsorPage } from "../../../../../actions/sponsor-pages-actions"; import CustomAlert from "../../../../../components/mui/custom-alert"; import SearchInput from "../../../../../components/mui/search-input"; @@ -196,7 +196,6 @@ const SponsorPagesTab = ({ console.log("ARCHIVE MANAGED ", item); const handleManagedEdit = (item) => { - console.log("CHECK!", item); getSponsorManagedPage(item.id).then(() => setOpenPopup("managedPagePopup")); };