From 7ed8e2f9a8842dff0452bcd9d4a4ad9715875f3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 14 May 2026 16:44:51 -0300 Subject: [PATCH 1/2] fix: reload table after archive/unarchive rows 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 | 21 +++++++++++++++++-- .../form-templates/form-template-list-page.js | 13 +++++++++++- .../inventory/inventory-list-page.js | 13 ++++++++++-- .../page-templates/page-template-list-page.js | 13 ++++++++++-- .../sponsors/show-pages-list-page/index.js | 9 +++++++- .../sponsor-form-item-list-page/index.js | 16 ++++++++++++-- .../sponsors/sponsor-forms-list-page/index.js | 9 ++++++-- .../sponsor-forms-manage-items.js | 17 +++++++++++++-- .../tabs/sponsor-forms-tab/index.js | 18 ++++++++++++++-- .../tabs/sponsor-pages-tab/index.js | 6 ++++-- src/utils/methods.js | 7 +++++++ 11 files changed, 124 insertions(+), 18 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..980997ac3 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 @@ -45,6 +45,7 @@ import AddFormTemplateItemDialog from "./add-form-template-item-popup"; import SponsorInventoryDialog from "./sponsor-inventory-popup"; import { getInventoryItems } from "../../../actions/inventory-item-actions"; import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; +import { getSafePageAfterRemove } from "../../../utils/methods"; const FormTemplateItemListPage = ({ formTemplateId, @@ -161,9 +162,25 @@ const FormTemplateItemListPage = ({ }; const handleArchiveItem = (item) => - item.is_archived + (item.is_archived ? unarchiveFormTemplateItem(formTemplateId, item) - : archiveFormTemplateItem(formTemplateId, item); + : archiveFormTemplateItem(formTemplateId, item) + ).then(() => { + const safePage = getSafePageAfterRemove( + totalFormTemplateItems, + perPage, + currentPage + ); + getFormTemplateItems( + formTemplateId, + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }); const handleShowArchivedForms = (ev) => { getFormTemplateItems( 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 f5a379013..3fbf4afc7 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 @@ -42,6 +42,7 @@ import FormTemplateDialog from "./form-template-popup"; import history from "../../../history"; import FormTemplateFromDuplicateDialog from "./form-template-from-duplicate-popup"; import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; +import { getSafePageAfterRemove } from "../../../utils/methods"; const FormTemplateListPage = ({ formTemplates, @@ -153,7 +154,17 @@ const FormTemplateListPage = ({ }; const handleArchiveItem = (item) => - item.is_archived ? unarchiveFormTemplate(item) : archiveFormTemplate(item); + (item.is_archived + ? unarchiveFormTemplate(item) + : archiveFormTemplate(item) + ).then(() => { + const safePage = getSafePageAfterRemove( + totalFormTemplates, + perPage, + currentPage + ); + getFormTemplates(term, safePage, perPage, order, orderDir, showArchived); + }); const handleShowArchivedForms = (value) => { getFormTemplates( diff --git a/src/pages/sponsors-global/inventory/inventory-list-page.js b/src/pages/sponsors-global/inventory/inventory-list-page.js index b6e0d072f..d544d2879 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -44,6 +44,7 @@ import { } from "../../../actions/inventory-item-actions"; import SponsorInventoryDialog from "../form-templates/sponsor-inventory-popup"; import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; +import { getSafePageAfterRemove } from "../../../utils/methods"; const PREVIEW_BOX_SIZE = 220; const PREVIEW_MARGIN_BOTTOM = 1; @@ -262,9 +263,17 @@ const InventoryListPage = ({ }; const handleArchiveItem = (item) => - item.is_archived + (item.is_archived ? unarchiveInventoryItem(item) - : archiveInventoryItem(item); + : archiveInventoryItem(item) + ).then(() => { + const safePage = getSafePageAfterRemove( + totalInventoryItems, + perPage, + currentPage + ); + getInventoryItems(term, safePage, perPage, order, orderDir, showArchived); + }); const columns = [ { 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..cb7c53092 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 @@ -38,6 +38,7 @@ import { import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; import PageTemplatePopup from "./page-template-popup"; import PageTemplateClonePopup from "./page-template-clone-popup"; +import { getSafePageAfterRemove } from "../../../utils/methods"; const PageTemplateListPage = ({ pageTemplates, @@ -119,9 +120,17 @@ const PageTemplateListPage = ({ }; const handleArchive = (item) => - item.is_archived + (item.is_archived ? unarchivePageTemplate(item.id) - : archivePageTemplate(item.id); + : archivePageTemplate(item.id) + ).then(() => { + const safePage = getSafePageAfterRemove( + totalPageTemplates, + perPage, + currentPage + ); + getPageTemplates(term, safePage, perPage, order, orderDir, showArchived); + }); const handleEdit = (row) => { getPageTemplate(row.id).then(() => setOpenPageDialog(true)); diff --git a/src/pages/sponsors/show-pages-list-page/index.js b/src/pages/sponsors/show-pages-list-page/index.js index f9c64b527..0bfde82c4 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -39,6 +39,7 @@ import CustomAlert from "../../../components/mui/custom-alert"; import GlobalPagePopup from "./components/global-page/global-page-popup"; import PageTemplatePopup from "../../sponsors-global/page-templates/page-template-popup"; import { DEFAULT_CURRENT_PAGE, MAX_PER_PAGE } from "../../../utils/constants"; +import { getSafePageAfterRemove } from "../../../utils/methods"; const ShowPagesListPage = ({ showPages, @@ -92,7 +93,13 @@ const ShowPagesListPage = ({ }; const handleArchiveItem = (item) => - item.is_archived ? unarchiveShowPage(item.id) : archiveShowPage(item.id); + (item.is_archived + ? unarchiveShowPage(item.id) + : archiveShowPage(item.id) + ).then(() => { + const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); + getShowPages(term, safePage, perPage, order, orderDir, showArchived); + }); const handleShowArchivedForms = (ev) => { getShowPages( diff --git a/src/pages/sponsors/sponsor-form-item-list-page/index.js b/src/pages/sponsors/sponsor-form-item-list-page/index.js index b8b2822a0..be7aedfae 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/index.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/index.js @@ -42,6 +42,7 @@ import SponsorFormAddItemFromInventoryPopup from "./components/sponsor-form-add- import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants"; import { rateCellValidation } from "../../../utils/yup"; import { rateToCents } from "../../../utils/rate-helpers"; +import { getSafePageAfterRemove } from "../../../utils/methods"; const SponsorFormItemListPage = ({ match, @@ -110,9 +111,20 @@ const SponsorFormItemListPage = ({ }; const handleArchiveItem = (item) => - item.is_archived + (item.is_archived ? unarchiveSponsorFormItem(formId, item.id) - : archiveSponsorFormItem(formId, item.id); + : archiveSponsorFormItem(formId, item.id) + ).then(() => { + const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); + getSponsorFormItems( + formId, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }); const handleRowDelete = (itemId) => { deleteSponsorFormItem(formId, itemId).then(() => { diff --git a/src/pages/sponsors/sponsor-forms-list-page/index.js b/src/pages/sponsors/sponsor-forms-list-page/index.js index 8296b1a49..e03855eb7 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -42,6 +42,7 @@ import GlobalTemplatePopup from "./components/global-template/global-template-po import FormTemplatePopup from "./components/form-template/form-template-popup"; import { DEFAULT_CURRENT_PAGE, MAX_PER_PAGE } from "../../../utils/constants"; import { normalizeTiers, sameTierSet } from "./utils"; +import { getSafePageAfterRemove } from "../../../utils/methods"; const SponsorFormsListPage = ({ sponsorForms, @@ -118,9 +119,13 @@ const SponsorFormsListPage = ({ }; const handleArchiveItem = (item) => - item.is_archived + (item.is_archived ? unarchiveSponsorForm(item.id) - : archiveSponsorForm(item.id); + : archiveSponsorForm(item.id) + ).then(() => { + const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); + getSponsorForms(term, safePage, perPage, order, orderDir, showArchived); + }); const handleShowArchivedForms = (ev) => { getSponsorForms( 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 5ccaca2fb..12814972c 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 @@ -48,6 +48,7 @@ import { import { rateCellValidation } from "../../../../../../../utils/yup"; import { rateToCents } from "../../../../../../../utils/rate-helpers"; import Restrict from "../../../../../../../routes/restrict"; +import { getSafePageAfterRemove } from "../../../../../../../utils/methods"; const SponsorFormsManageItems = ({ term, @@ -151,9 +152,21 @@ const SponsorFormsManageItems = ({ }; const handleArchiveItem = (item) => - item.is_archived + (item.is_archived ? unarchiveSponsorCustomizedFormItem(formId, item.id) - : archiveSponsorCustomizedFormItem(formId, item.id); + : archiveSponsorCustomizedFormItem(formId, item.id) + ).then(() => { + const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); + getSponsorCustomizedFormItems( + formId, + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }); const handleShowArchivedItems = (ev) => { getSponsorCustomizedFormItems( 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 044424ff9..5d9eb820a 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 @@ -38,6 +38,7 @@ import CustomAlert from "../../../../../components/mui/custom-alert"; import AddSponsorFormTemplatePopup from "./components/add-sponsor-form-template-popup"; import CustomizedFormPopup from "./components/customized-form/customized-form-popup"; import { DEFAULT_CURRENT_PAGE } from "../../../../../utils/constants"; +import { getSafePageAfterRemove } from "../../../../../utils/methods"; const SponsorFormsTab = ({ term, @@ -146,9 +147,22 @@ const SponsorFormsTab = ({ }; const handleArchiveForm = (item) => - item.is_archived + (item.is_archived ? unarchiveSponsorCustomizedForm(item.id) - : archiveSponsorCustomizedForm(item.id); + : archiveSponsorCustomizedForm(item.id) + ).then(() => { + const { perPage, order, orderDir, currentPage, totalCount } = + customizedForms; + const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); + getSponsorCustomizedForms( + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }); const handleCustomizedFormManageItems = (item) => { history.push( 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 7e845fb98..685763828 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 @@ -183,10 +183,12 @@ const SponsorPagesTab = ({ ? unarchiveCustomizedPage(item.id) : archiveCustomizedPage(item.id) ).then(() => { - const { perPage, order, orderDir, currentPage } = customizedPages; + const { perPage, order, orderDir, currentPage, totalItems } = + customizedPages; + const safePage = getSafePageAfterRemove(totalItems, perPage, currentPage); return getSponsorCustomizedPages( term, - currentPage, + safePage, perPage, order, orderDir, diff --git a/src/utils/methods.js b/src/utils/methods.js index b52505028..91df637a0 100644 --- a/src/utils/methods.js +++ b/src/utils/methods.js @@ -629,3 +629,10 @@ export const formatDate = (date, timeZone, format = DATETIME_FORMAT) => { .tz(timeZone) .format(format); }; + +export const getSafePageAfterRemove = (totalCount, perPage, currentPage) => { + const totalAfter = totalCount - 1; + const totalPages = Math.ceil(totalAfter / perPage); + const lastValidPage = Math.max(1, totalPages); + return Math.min(currentPage, lastValidPage); +}; From 9484135756c36b7e182ac59d940f62be678e684e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 14 May 2026 17:07:18 -0300 Subject: [PATCH 2/2] fix: add missing import on sponsor pages tab MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/pages/sponsors/sponsor-page/tabs/sponsor-pages-tab/index.js | 1 + 1 file changed, 1 insertion(+) 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 685763828..2460a75e5 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 @@ -44,6 +44,7 @@ import { DEFAULT_CURRENT_PAGE, SPONSOR_MANAGED_PAGE_ASSIGNMENT } from "../../../../../utils/constants"; +import { getSafePageAfterRemove } from "../../../../../utils/methods"; import AddSponsorPageTemplatePopup from "./components/add-sponsor-page-template-popup"; import PageTemplatePopup from "../../../../sponsors-global/page-templates/page-template-popup";