From ca5bda03da75eb2515ce80c171f4f4460b5b94de 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/8] 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 0d7fef187..bf08a5e3c 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 450652e90..f07baeebc 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -40,6 +40,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 = ({ match, @@ -94,7 +95,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 ef6fa7471..5a3b7d939 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 2c5e82b44..eb10dea25 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 @@ -184,10 +184,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 dd426a3dd..a14ade3ff 100644 --- a/src/utils/methods.js +++ b/src/utils/methods.js @@ -636,3 +636,10 @@ export const formatDate = ( export const getFileUploadAllowedExtensions = () => window.FILE_UPLOAD_ALLOWED_EXTENSIONS?.split(",").filter(Boolean) ?? []; + +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 8cc60e3b42208d7ed67b25a84fd1be62db381d44 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/8] 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 eb10dea25..4100da0cb 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"; From 457a7a15a7b27aca13dedc7c46fe8e74dad8394b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Mon, 18 May 2026 15:59:18 -0300 Subject: [PATCH 3/8] fix: change reducer cases for archive/unarchive, add catch on error 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 | 42 ++++++++++++------- .../form-templates/form-template-list-page.js | 35 +++++++++++----- .../inventory/inventory-list-page.js | 32 ++++++++++---- .../page-templates/page-template-list-page.js | 32 ++++++++++---- .../sponsors/show-pages-list-page/index.js | 19 +++++---- .../sponsor-form-item-list-page/index.js | 35 +++++++++++----- .../sponsors/sponsor-forms-list-page/index.js | 23 ++++++++-- .../sponsor-forms-manage-items.js | 38 ++++++++++++----- .../tabs/sponsor-forms-tab/index.js | 42 +++++++++++++------ .../tabs/sponsor-pages-tab/index.js | 42 +++++++++++++------ .../sponsor-form-items-list-reducer.test.js | 4 +- .../sponsors/show-pages-list-reducer.js | 6 ++- ...nsor-customized-form-items-list-reducer.js | 4 +- .../sponsor-form-items-list-reducer.js | 4 +- .../sponsors/sponsor-forms-list-reducer.js | 4 +- .../sponsor-page-forms-list-reducer.js | 3 +- .../sponsor-page-pages-list-reducer.js | 6 ++- .../form-template-item-list-reducer.js | 12 +++++- .../form-template-list-reducer.js | 12 +++++- .../inventory-item-list-reducer.js | 12 +++++- .../page-template-list-reducer.js | 12 +++++- 21 files changed, 301 insertions(+), 118 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 980997ac3..2a934215e 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 @@ -165,22 +165,34 @@ const FormTemplateItemListPage = ({ (item.is_archived ? unarchiveFormTemplateItem(formTemplateId, item) : archiveFormTemplateItem(formTemplateId, item) - ).then(() => { - const safePage = getSafePageAfterRemove( - totalFormTemplateItems, - perPage, - currentPage - ); - getFormTemplateItems( - formTemplateId, - term, - safePage, - perPage, - order, - orderDir, - showArchived + ) + .then(() => { + const safePage = getSafePageAfterRemove( + totalFormTemplateItems, + perPage, + currentPage + ); + getFormTemplateItems( + formTemplateId, + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }) + .catch(() => + getFormTemplateItems( + formTemplateId, + term, + currentPage, + 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 bf08a5e3c..fadaafc0a 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 @@ -154,17 +154,32 @@ const FormTemplateListPage = ({ }; const handleArchiveItem = (item) => - (item.is_archived - ? unarchiveFormTemplate(item) - : archiveFormTemplate(item) - ).then(() => { - const safePage = getSafePageAfterRemove( - totalFormTemplates, - perPage, - currentPage + (item.is_archived ? unarchiveFormTemplate(item) : archiveFormTemplate(item)) + .then(() => { + const safePage = getSafePageAfterRemove( + totalFormTemplates, + perPage, + currentPage + ); + getFormTemplates( + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }) + .catch(() => + getFormTemplates( + term, + currentPage, + perPage, + order, + orderDir, + showArchived + ) ); - 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 d544d2879..5a4e55f68 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -266,14 +266,32 @@ const InventoryListPage = ({ (item.is_archived ? unarchiveInventoryItem(item) : archiveInventoryItem(item) - ).then(() => { - const safePage = getSafePageAfterRemove( - totalInventoryItems, - perPage, - currentPage + ) + .then(() => { + const safePage = getSafePageAfterRemove( + totalInventoryItems, + perPage, + currentPage + ); + getInventoryItems( + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }) + .catch(() => + getInventoryItems( + term, + currentPage, + perPage, + order, + orderDir, + showArchived + ) ); - 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 cb7c53092..d078c3943 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,14 +123,32 @@ const PageTemplateListPage = ({ (item.is_archived ? unarchivePageTemplate(item.id) : archivePageTemplate(item.id) - ).then(() => { - const safePage = getSafePageAfterRemove( - totalPageTemplates, - perPage, - currentPage + ) + .then(() => { + const safePage = getSafePageAfterRemove( + totalPageTemplates, + perPage, + currentPage + ); + getPageTemplates( + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }) + .catch(() => + getPageTemplates( + term, + currentPage, + perPage, + order, + orderDir, + showArchived + ) ); - 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 f07baeebc..79dd14107 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -95,13 +95,18 @@ const ShowPagesListPage = ({ }; const handleArchiveItem = (item) => - (item.is_archived - ? unarchiveShowPage(item.id) - : archiveShowPage(item.id) - ).then(() => { - const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); - getShowPages(term, safePage, perPage, order, orderDir, showArchived); - }); + (item.is_archived ? unarchiveShowPage(item.id) : archiveShowPage(item.id)) + .then(() => { + const safePage = getSafePageAfterRemove( + totalCount, + perPage, + currentPage + ); + getShowPages(term, safePage, perPage, order, orderDir, showArchived); + }) + .catch(() => + getShowPages(term, currentPage, 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 be7aedfae..c4063fbda 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/index.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/index.js @@ -114,17 +114,32 @@ const SponsorFormItemListPage = ({ (item.is_archived ? unarchiveSponsorFormItem(formId, item.id) : archiveSponsorFormItem(formId, item.id) - ).then(() => { - const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); - getSponsorFormItems( - formId, - safePage, - perPage, - order, - orderDir, - showArchived + ) + .then(() => { + const safePage = getSafePageAfterRemove( + totalCount, + perPage, + currentPage + ); + getSponsorFormItems( + formId, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }) + .catch(() => + getSponsorFormItems( + formId, + currentPage, + 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 5a3b7d939..e529f1b23 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -122,10 +122,25 @@ const SponsorFormsListPage = ({ (item.is_archived ? unarchiveSponsorForm(item.id) : archiveSponsorForm(item.id) - ).then(() => { - const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); - getSponsorForms(term, safePage, perPage, order, orderDir, showArchived); - }); + ) + .then(() => { + const safePage = getSafePageAfterRemove( + totalCount, + perPage, + currentPage + ); + getSponsorForms(term, safePage, perPage, order, orderDir, showArchived); + }) + .catch(() => + getSponsorForms( + term, + currentPage, + 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 12814972c..b29e6ea7f 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 @@ -155,18 +155,34 @@ const SponsorFormsManageItems = ({ (item.is_archived ? unarchiveSponsorCustomizedFormItem(formId, item.id) : archiveSponsorCustomizedFormItem(formId, item.id) - ).then(() => { - const safePage = getSafePageAfterRemove(totalCount, perPage, currentPage); - getSponsorCustomizedFormItems( - formId, - term, - safePage, - perPage, - order, - orderDir, - showArchived + ) + .then(() => { + const safePage = getSafePageAfterRemove( + totalCount, + perPage, + currentPage + ); + getSponsorCustomizedFormItems( + formId, + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }) + .catch(() => + getSponsorCustomizedFormItems( + formId, + term, + currentPage, + 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 5d9eb820a..0f0f6c5d4 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 @@ -150,19 +150,35 @@ const SponsorFormsTab = ({ (item.is_archived ? unarchiveSponsorCustomizedForm(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 - ); - }); + ) + .then(() => { + const { perPage, order, orderDir, currentPage, totalCount } = + customizedForms; + const safePage = getSafePageAfterRemove( + totalCount, + perPage, + currentPage + ); + getSponsorCustomizedForms( + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }) + .catch(() => { + const { perPage, order, orderDir, currentPage } = customizedForms; + getSponsorCustomizedForms( + term, + currentPage, + 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 4100da0cb..8155be924 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 @@ -184,19 +184,35 @@ const SponsorPagesTab = ({ (item.is_archived ? unarchiveCustomizedPage(item.id) : archiveCustomizedPage(item.id) - ).then(() => { - const { perPage, order, orderDir, currentPage, totalItems } = - customizedPages; - const safePage = getSafePageAfterRemove(totalItems, perPage, currentPage); - return getSponsorCustomizedPages( - term, - safePage, - perPage, - order, - orderDir, - showArchived - ); - }); + ) + .then(() => { + const { perPage, order, orderDir, currentPage, totalItems } = + customizedPages; + const safePage = getSafePageAfterRemove( + totalItems, + perPage, + currentPage + ); + return getSponsorCustomizedPages( + term, + safePage, + perPage, + order, + orderDir, + showArchived + ); + }) + .catch(() => { + const { perPage, order, orderDir, currentPage } = customizedPages; + getSponsorCustomizedPages( + term, + currentPage, + perPage, + order, + orderDir, + showArchived + ); + }); const handleManagedEdit = (item) => { getSponsorManagedPage(item.id).then(() => setOpenPopup("managedPagePopup")); diff --git a/src/reducers/sponsors/__tests__/sponsor-form-items-list-reducer.test.js b/src/reducers/sponsors/__tests__/sponsor-form-items-list-reducer.test.js index 054db2924..67ce11980 100644 --- a/src/reducers/sponsors/__tests__/sponsor-form-items-list-reducer.test.js +++ b/src/reducers/sponsors/__tests__/sponsor-form-items-list-reducer.test.js @@ -310,7 +310,7 @@ describe("SponsorFormItemsListReducer", () => { ); expect(result).toStrictEqual({ ...initialState, - totalCount: 2, + totalCount: 1, items: [ { id: "A", @@ -379,7 +379,7 @@ describe("SponsorFormItemsListReducer", () => { ); expect(result).toStrictEqual({ ...initialState, - totalCount: 2, + totalCount: 1, items: [ { id: "A", diff --git a/src/reducers/sponsors/show-pages-list-reducer.js b/src/reducers/sponsors/show-pages-list-reducer.js index 9b69913f3..6bb7417d2 100644 --- a/src/reducers/sponsors/show-pages-list-reducer.js +++ b/src/reducers/sponsors/show-pages-list-reducer.js @@ -114,7 +114,8 @@ const showPagesListReducer = (state = DEFAULT_STATE, action) => { ); return { ...state, - showPages: [...pages] + showPages: [...pages], + totalCount: state.totalCount - 1 }; } case SHOW_PAGE_UNARCHIVED: { @@ -124,7 +125,8 @@ const showPagesListReducer = (state = DEFAULT_STATE, action) => { ); return { ...state, - showPages: [...pages] + showPages: [...pages], + totalCount: state.totalCount - 1 }; } case RECEIVE_SHOW_PAGE: { diff --git a/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js b/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js index a2de1b315..7f5548f66 100644 --- a/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js +++ b/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js @@ -131,7 +131,7 @@ const sponsorCustomizedFormItemsListReducer = ( item.id === itemId ? { ...item, is_archived: true } : item ); - return { ...state, items }; + return { ...state, items, totalCount: state.totalCount - 1 }; } case SPONSOR_CUSTOMIZED_FORM_ITEM_UNARCHIVED: { const { itemId } = payload; @@ -140,7 +140,7 @@ const sponsorCustomizedFormItemsListReducer = ( item.id === itemId ? { ...item, is_archived: false } : item ); - return { ...state, items }; + return { ...state, items, totalCount: state.totalCount - 1 }; } case SPONSOR_FORM_MANAGED_ITEM_UPDATED: { const updatedItem = payload.response; diff --git a/src/reducers/sponsors/sponsor-form-items-list-reducer.js b/src/reducers/sponsors/sponsor-form-items-list-reducer.js index 318ea185f..178550094 100644 --- a/src/reducers/sponsors/sponsor-form-items-list-reducer.js +++ b/src/reducers/sponsors/sponsor-form-items-list-reducer.js @@ -122,7 +122,7 @@ const sponsorFormItemsListReducer = (state = DEFAULT_STATE, action) => { item.id === itemId ? { ...item, is_archived: true } : item ); - return { ...state, items }; + return { ...state, items, totalCount: state.totalCount - 1 }; } case SPONSOR_FORM_ITEM_UNARCHIVED: { const { itemId } = payload; @@ -131,7 +131,7 @@ const sponsorFormItemsListReducer = (state = DEFAULT_STATE, action) => { item.id === itemId ? { ...item, is_archived: false } : item ); - return { ...state, items }; + return { ...state, items, totalCount: state.totalCount - 1 }; } default: return state; diff --git a/src/reducers/sponsors/sponsor-forms-list-reducer.js b/src/reducers/sponsors/sponsor-forms-list-reducer.js index de8688891..d95955aa8 100644 --- a/src/reducers/sponsors/sponsor-forms-list-reducer.js +++ b/src/reducers/sponsors/sponsor-forms-list-reducer.js @@ -157,7 +157,7 @@ const sponsorFormsListReducer = (state = DEFAULT_STATE, action) => { item.id === formId ? { ...item, is_archived: true } : item ); - return { ...state, sponsorForms }; + return { ...state, sponsorForms, totalCount: state.totalCount - 1 }; } case SPONSOR_FORM_UNARCHIVED: { const { formId } = payload; @@ -166,7 +166,7 @@ const sponsorFormsListReducer = (state = DEFAULT_STATE, action) => { item.id === formId ? { ...item, is_archived: false } : item ); - return { ...state, sponsorForms }; + return { ...state, sponsorForms, totalCount: state.totalCount - 1 }; } case SPONSOR_FORM_DELETED: { const { formId } = payload; diff --git a/src/reducers/sponsors/sponsor-page-forms-list-reducer.js b/src/reducers/sponsors/sponsor-page-forms-list-reducer.js index 2f5c4b6da..df37610ec 100644 --- a/src/reducers/sponsors/sponsor-page-forms-list-reducer.js +++ b/src/reducers/sponsors/sponsor-page-forms-list-reducer.js @@ -247,7 +247,8 @@ const sponsorPageFormsListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedForms: { ...state.customizedForms, - forms + forms, + totalCount: state.customizedForms.totalCount - 1 } }; } diff --git a/src/reducers/sponsors/sponsor-page-pages-list-reducer.js b/src/reducers/sponsors/sponsor-page-pages-list-reducer.js index e30e9d436..8d43a5f8e 100644 --- a/src/reducers/sponsors/sponsor-page-pages-list-reducer.js +++ b/src/reducers/sponsors/sponsor-page-pages-list-reducer.js @@ -205,7 +205,8 @@ const sponsorPagePagesListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedPages: { ...state.customizedPages, - pages: [...pages] + pages: [...pages], + totalItems: state.customizedPages.totalItems - 1 } }; } @@ -218,7 +219,8 @@ const sponsorPagePagesListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedPages: { ...state.customizedPages, - pages: [...pages] + pages: [...pages], + totalItems: state.customizedPages.totalItems - 1 } }; } diff --git a/src/reducers/sponsors_inventory/form-template-item-list-reducer.js b/src/reducers/sponsors_inventory/form-template-item-list-reducer.js index aa9cb2570..7edfe0244 100644 --- a/src/reducers/sponsors_inventory/form-template-item-list-reducer.js +++ b/src/reducers/sponsors_inventory/form-template-item-list-reducer.js @@ -108,7 +108,11 @@ const formTemplateItemListReducer = (state = DEFAULT_STATE, action = {}) => { ? { ...item, is_archived: true } : item ); - return { ...state, formTemplateItems: updatedFormTemplatesItems }; + return { + ...state, + formTemplateItems: updatedFormTemplatesItems, + totalFormTemplateItems: state.totalFormTemplateItems - 1 + }; } case FORM_TEMPLATE_ITEM_UNARCHIVED: { const updatedFormTemplateItemId = payload; @@ -118,7 +122,11 @@ const formTemplateItemListReducer = (state = DEFAULT_STATE, action = {}) => { ? { ...item, is_archived: false } : item ); - return { ...state, formTemplateItems: updatedFormTemplatesItems }; + return { + ...state, + formTemplateItems: updatedFormTemplatesItems, + totalFormTemplateItems: state.totalFormTemplateItems - 1 + }; } default: return state; diff --git a/src/reducers/sponsors_inventory/form-template-list-reducer.js b/src/reducers/sponsors_inventory/form-template-list-reducer.js index 8406d3b3c..e5758b0a3 100644 --- a/src/reducers/sponsors_inventory/form-template-list-reducer.js +++ b/src/reducers/sponsors_inventory/form-template-list-reducer.js @@ -105,7 +105,11 @@ const formTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ? { ...item, is_archived: true } : item ); - return { ...state, formTemplates: updatedFormTemplates }; + return { + ...state, + formTemplates: updatedFormTemplates, + totalFormTemplates: state.totalFormTemplates - 1 + }; } case FORM_TEMPLATE_UNARCHIVED: { const updatedFormTemplateId = payload; @@ -115,7 +119,11 @@ const formTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ? { ...item, is_archived: false } : item ); - return { ...state, formTemplates: updatedFormTemplates }; + return { + ...state, + formTemplates: updatedFormTemplates, + totalFormTemplates: state.totalFormTemplates - 1 + }; } case CHANGE_FORM_TEMPLATE_SEARCH_TERM: { const { term } = payload; diff --git a/src/reducers/sponsors_inventory/inventory-item-list-reducer.js b/src/reducers/sponsors_inventory/inventory-item-list-reducer.js index 6da37a276..96855ef45 100644 --- a/src/reducers/sponsors_inventory/inventory-item-list-reducer.js +++ b/src/reducers/sponsors_inventory/inventory-item-list-reducer.js @@ -203,7 +203,11 @@ const inventoryItemListReducer = (state = DEFAULT_STATE, action = {}) => { const updatedInventoryItems = state.inventoryItems.map((item) => item.id === updatedItem.id ? { ...item, is_archived: true } : item ); - return { ...state, inventoryItems: updatedInventoryItems }; + return { + ...state, + inventoryItems: updatedInventoryItems, + totalInventoryItems: state.totalInventoryItems - 1 + }; } case INVENTORY_ITEM_UNARCHIVED: { const updatedItemId = payload; @@ -211,7 +215,11 @@ const inventoryItemListReducer = (state = DEFAULT_STATE, action = {}) => { const updatedInventoryItems = state.inventoryItems.map((item) => item.id === updatedItemId ? { ...item, is_archived: false } : item ); - return { ...state, inventoryItems: updatedInventoryItems }; + return { + ...state, + inventoryItems: updatedInventoryItems, + totalInventoryItems: state.totalInventoryItems - 1 + }; } case INVENTORY_ITEM_IMAGE_SAVED: { const newImage = payload.response; diff --git a/src/reducers/sponsors_inventory/page-template-list-reducer.js b/src/reducers/sponsors_inventory/page-template-list-reducer.js index c7d955d45..8f4c687c6 100644 --- a/src/reducers/sponsors_inventory/page-template-list-reducer.js +++ b/src/reducers/sponsors_inventory/page-template-list-reducer.js @@ -112,7 +112,11 @@ const pageTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ? { ...item, is_archived: true } : item ); - return { ...state, pageTemplates: updatedPageTemplates }; + return { + ...state, + pageTemplates: updatedPageTemplates, + totalPageTemplates: state.totalPageTemplates - 1 + }; } case PAGE_TEMPLATE_UNARCHIVED: { const { pageTemplateId } = payload; @@ -120,7 +124,11 @@ const pageTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { const updatedPageTemplates = state.pageTemplates.map((item) => item.id === pageTemplateId ? { ...item, is_archived: false } : item ); - return { ...state, pageTemplates: updatedPageTemplates }; + return { + ...state, + pageTemplates: updatedPageTemplates, + totalPageTemplates: state.totalPageTemplates - 1 + }; } default: return state; From 62a458843e3f4b283f2f6a4c4b71accc2a3a2435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Wed, 20 May 2026 17:08:24 -0300 Subject: [PATCH 4/8] fix: add unit test cases for getSafePageAfterRemove MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/utils/__tests__/methods.test.js | 134 +++++++++++++++++----------- 1 file changed, 80 insertions(+), 54 deletions(-) diff --git a/src/utils/__tests__/methods.test.js b/src/utils/__tests__/methods.test.js index ac5275c43..e77c8108b 100644 --- a/src/utils/__tests__/methods.test.js +++ b/src/utils/__tests__/methods.test.js @@ -1,4 +1,8 @@ -import { getMediaInputValue, normalizeSelectAllField } from "../methods"; +import { + getMediaInputValue, + normalizeSelectAllField, + getSafePageAfterRemove +} from "../methods"; const FIXED_NOW = 1_772_551_911_231; beforeAll(() => jest.spyOn(Date, "now").mockReturnValue(FIXED_NOW)); @@ -55,69 +59,91 @@ describe("getMediaInputValue", () => { expect(result.filename).toBe("README"); }); }); +}); - describe("normalizeSelectAllField", () => { - it("should return default object when items is empty array", () => { - expect(normalizeSelectAllField([], "apply_to_all", "items")).toEqual({ - apply_to_all: false, - items: [] - }); +describe("normalizeSelectAllField", () => { + it("should return default object when items is empty array", () => { + expect(normalizeSelectAllField([], "apply_to_all", "items")).toEqual({ + apply_to_all: false, + items: [] }); + }); - it("should return all selected when array contains 'all'", () => { - expect( - normalizeSelectAllField( - ["all", { id: 1 }, { id: 2 }], - "apply_to_all", - "items" - ) - ).toEqual({ - apply_to_all: true, - items: [] - }); + it("should return all selected when array contains 'all'", () => { + expect( + normalizeSelectAllField( + ["all", { id: 1 }, { id: 2 }], + "apply_to_all", + "items" + ) + ).toEqual({ + apply_to_all: true, + items: [] }); + }); - it("should return all selected when allSelected flag is true", () => { - expect( - normalizeSelectAllField([{ id: 1 }], "apply_to_all", "items", true) - ).toEqual({ - apply_to_all: true, - items: [] - }); + it("should return all selected when allSelected flag is true", () => { + expect( + normalizeSelectAllField([{ id: 1 }], "apply_to_all", "items", true) + ).toEqual({ + apply_to_all: true, + items: [] }); + }); - it.each([[], null, undefined])( - "should return apply_to_all true when allSelected is true and items is %s", - (items) => { - expect( - normalizeSelectAllField(items, "apply_to_all", "items", true) - ).toEqual({ apply_to_all: true, items: [] }); - } - ); - - it.each([[], null, undefined])( - "should return apply_to_all false when allSelected is false and items is %s", - (items) => { - expect( - normalizeSelectAllField(items, "apply_to_all", "items", false) - ).toEqual({ apply_to_all: false, items: [] }); - } - ); - - it("should return array of ids when items are objects with id", () => { + it.each([[], null, undefined])( + "should return apply_to_all true when allSelected is true and items is %s", + (items) => { expect( - normalizeSelectAllField([{ id: 1 }, { id: 2 }], "apply_to_all", "items") - ).toEqual({ - apply_to_all: false, - items: [1, 2] - }); + normalizeSelectAllField(items, "apply_to_all", "items", true) + ).toEqual({ apply_to_all: true, items: [] }); + } + ); + + it.each([[], null, undefined])( + "should return apply_to_all false when allSelected is false and items is %s", + (items) => { + expect( + normalizeSelectAllField(items, "apply_to_all", "items", false) + ).toEqual({ apply_to_all: false, items: [] }); + } + ); + + it("should return array of ids when items are objects with id", () => { + expect( + normalizeSelectAllField([{ id: 1 }, { id: 2 }], "apply_to_all", "items") + ).toEqual({ + apply_to_all: false, + items: [1, 2] }); + }); - it("should return an array of values directly when items are primitives", () => { - expect(normalizeSelectAllField([1, 2], "apply_to_all", "items")).toEqual({ - apply_to_all: false, - items: [1, 2] - }); + it("should return an array of values directly when items are primitives", () => { + expect(normalizeSelectAllField([1, 2], "apply_to_all", "items")).toEqual({ + apply_to_all: false, + items: [1, 2] }); }); }); + +describe("getSafePageAfterRemove", () => { + it("should stay on page 1 when there is only one page", () => { + expect(getSafePageAfterRemove(10, 10, 1)).toBe(1); + }); + + it("should go back to page 1 when removing the last item on page 2", () => { + expect(getSafePageAfterRemove(11, 10, 2)).toBe(1); + }); + + it("should stay on page 2 when it still has items after removal", () => { + expect(getSafePageAfterRemove(12, 10, 2)).toBe(2); + }); + + it("should go back one page when removing the last item on the last page", () => { + expect(getSafePageAfterRemove(21, 10, 3)).toBe(2); + }); + + it("should never return a page lower than 1", () => { + expect(getSafePageAfterRemove(1, 10, 1)).toBe(1); + }); +}); From de46eb273a07e7f1ad9b5305ef5bed323c53edf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 11 Jun 2026 16:15:09 -0300 Subject: [PATCH 5/8] fix: remove totalCount update from reducer to keep the data sync with the page reload MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- src/reducers/sponsors/show-pages-list-reducer.js | 6 ++---- .../sponsors/sponsor-customized-form-items-list-reducer.js | 4 ++-- src/reducers/sponsors/sponsor-form-items-list-reducer.js | 4 ++-- src/reducers/sponsors/sponsor-forms-list-reducer.js | 4 ++-- src/reducers/sponsors/sponsor-page-forms-list-reducer.js | 3 +-- src/reducers/sponsors/sponsor-page-pages-list-reducer.js | 6 ++---- .../sponsors_inventory/form-template-item-list-reducer.js | 6 ++---- .../sponsors_inventory/form-template-list-reducer.js | 6 ++---- .../sponsors_inventory/inventory-item-list-reducer.js | 6 ++---- .../sponsors_inventory/page-template-list-reducer.js | 6 ++---- 10 files changed, 19 insertions(+), 32 deletions(-) diff --git a/src/reducers/sponsors/show-pages-list-reducer.js b/src/reducers/sponsors/show-pages-list-reducer.js index 6bb7417d2..9b69913f3 100644 --- a/src/reducers/sponsors/show-pages-list-reducer.js +++ b/src/reducers/sponsors/show-pages-list-reducer.js @@ -114,8 +114,7 @@ const showPagesListReducer = (state = DEFAULT_STATE, action) => { ); return { ...state, - showPages: [...pages], - totalCount: state.totalCount - 1 + showPages: [...pages] }; } case SHOW_PAGE_UNARCHIVED: { @@ -125,8 +124,7 @@ const showPagesListReducer = (state = DEFAULT_STATE, action) => { ); return { ...state, - showPages: [...pages], - totalCount: state.totalCount - 1 + showPages: [...pages] }; } case RECEIVE_SHOW_PAGE: { diff --git a/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js b/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js index 7f5548f66..a2de1b315 100644 --- a/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js +++ b/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js @@ -131,7 +131,7 @@ const sponsorCustomizedFormItemsListReducer = ( item.id === itemId ? { ...item, is_archived: true } : item ); - return { ...state, items, totalCount: state.totalCount - 1 }; + return { ...state, items }; } case SPONSOR_CUSTOMIZED_FORM_ITEM_UNARCHIVED: { const { itemId } = payload; @@ -140,7 +140,7 @@ const sponsorCustomizedFormItemsListReducer = ( item.id === itemId ? { ...item, is_archived: false } : item ); - return { ...state, items, totalCount: state.totalCount - 1 }; + return { ...state, items }; } case SPONSOR_FORM_MANAGED_ITEM_UPDATED: { const updatedItem = payload.response; diff --git a/src/reducers/sponsors/sponsor-form-items-list-reducer.js b/src/reducers/sponsors/sponsor-form-items-list-reducer.js index 178550094..318ea185f 100644 --- a/src/reducers/sponsors/sponsor-form-items-list-reducer.js +++ b/src/reducers/sponsors/sponsor-form-items-list-reducer.js @@ -122,7 +122,7 @@ const sponsorFormItemsListReducer = (state = DEFAULT_STATE, action) => { item.id === itemId ? { ...item, is_archived: true } : item ); - return { ...state, items, totalCount: state.totalCount - 1 }; + return { ...state, items }; } case SPONSOR_FORM_ITEM_UNARCHIVED: { const { itemId } = payload; @@ -131,7 +131,7 @@ const sponsorFormItemsListReducer = (state = DEFAULT_STATE, action) => { item.id === itemId ? { ...item, is_archived: false } : item ); - return { ...state, items, totalCount: state.totalCount - 1 }; + return { ...state, items }; } default: return state; diff --git a/src/reducers/sponsors/sponsor-forms-list-reducer.js b/src/reducers/sponsors/sponsor-forms-list-reducer.js index d95955aa8..de8688891 100644 --- a/src/reducers/sponsors/sponsor-forms-list-reducer.js +++ b/src/reducers/sponsors/sponsor-forms-list-reducer.js @@ -157,7 +157,7 @@ const sponsorFormsListReducer = (state = DEFAULT_STATE, action) => { item.id === formId ? { ...item, is_archived: true } : item ); - return { ...state, sponsorForms, totalCount: state.totalCount - 1 }; + return { ...state, sponsorForms }; } case SPONSOR_FORM_UNARCHIVED: { const { formId } = payload; @@ -166,7 +166,7 @@ const sponsorFormsListReducer = (state = DEFAULT_STATE, action) => { item.id === formId ? { ...item, is_archived: false } : item ); - return { ...state, sponsorForms, totalCount: state.totalCount - 1 }; + return { ...state, sponsorForms }; } case SPONSOR_FORM_DELETED: { const { formId } = payload; diff --git a/src/reducers/sponsors/sponsor-page-forms-list-reducer.js b/src/reducers/sponsors/sponsor-page-forms-list-reducer.js index df37610ec..2f5c4b6da 100644 --- a/src/reducers/sponsors/sponsor-page-forms-list-reducer.js +++ b/src/reducers/sponsors/sponsor-page-forms-list-reducer.js @@ -247,8 +247,7 @@ const sponsorPageFormsListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedForms: { ...state.customizedForms, - forms, - totalCount: state.customizedForms.totalCount - 1 + forms } }; } diff --git a/src/reducers/sponsors/sponsor-page-pages-list-reducer.js b/src/reducers/sponsors/sponsor-page-pages-list-reducer.js index 8d43a5f8e..e30e9d436 100644 --- a/src/reducers/sponsors/sponsor-page-pages-list-reducer.js +++ b/src/reducers/sponsors/sponsor-page-pages-list-reducer.js @@ -205,8 +205,7 @@ const sponsorPagePagesListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedPages: { ...state.customizedPages, - pages: [...pages], - totalItems: state.customizedPages.totalItems - 1 + pages: [...pages] } }; } @@ -219,8 +218,7 @@ const sponsorPagePagesListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedPages: { ...state.customizedPages, - pages: [...pages], - totalItems: state.customizedPages.totalItems - 1 + pages: [...pages] } }; } diff --git a/src/reducers/sponsors_inventory/form-template-item-list-reducer.js b/src/reducers/sponsors_inventory/form-template-item-list-reducer.js index 7edfe0244..b408007f2 100644 --- a/src/reducers/sponsors_inventory/form-template-item-list-reducer.js +++ b/src/reducers/sponsors_inventory/form-template-item-list-reducer.js @@ -110,8 +110,7 @@ const formTemplateItemListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - formTemplateItems: updatedFormTemplatesItems, - totalFormTemplateItems: state.totalFormTemplateItems - 1 + formTemplateItems: updatedFormTemplatesItems }; } case FORM_TEMPLATE_ITEM_UNARCHIVED: { @@ -124,8 +123,7 @@ const formTemplateItemListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - formTemplateItems: updatedFormTemplatesItems, - totalFormTemplateItems: state.totalFormTemplateItems - 1 + formTemplateItems: updatedFormTemplatesItems }; } default: diff --git a/src/reducers/sponsors_inventory/form-template-list-reducer.js b/src/reducers/sponsors_inventory/form-template-list-reducer.js index e5758b0a3..6b09f7aa5 100644 --- a/src/reducers/sponsors_inventory/form-template-list-reducer.js +++ b/src/reducers/sponsors_inventory/form-template-list-reducer.js @@ -107,8 +107,7 @@ const formTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - formTemplates: updatedFormTemplates, - totalFormTemplates: state.totalFormTemplates - 1 + formTemplates: updatedFormTemplates }; } case FORM_TEMPLATE_UNARCHIVED: { @@ -121,8 +120,7 @@ const formTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - formTemplates: updatedFormTemplates, - totalFormTemplates: state.totalFormTemplates - 1 + formTemplates: updatedFormTemplates }; } case CHANGE_FORM_TEMPLATE_SEARCH_TERM: { diff --git a/src/reducers/sponsors_inventory/inventory-item-list-reducer.js b/src/reducers/sponsors_inventory/inventory-item-list-reducer.js index 96855ef45..1d2aa8452 100644 --- a/src/reducers/sponsors_inventory/inventory-item-list-reducer.js +++ b/src/reducers/sponsors_inventory/inventory-item-list-reducer.js @@ -205,8 +205,7 @@ const inventoryItemListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - inventoryItems: updatedInventoryItems, - totalInventoryItems: state.totalInventoryItems - 1 + inventoryItems: updatedInventoryItems }; } case INVENTORY_ITEM_UNARCHIVED: { @@ -217,8 +216,7 @@ const inventoryItemListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - inventoryItems: updatedInventoryItems, - totalInventoryItems: state.totalInventoryItems - 1 + inventoryItems: updatedInventoryItems }; } case INVENTORY_ITEM_IMAGE_SAVED: { diff --git a/src/reducers/sponsors_inventory/page-template-list-reducer.js b/src/reducers/sponsors_inventory/page-template-list-reducer.js index 8f4c687c6..206696b2e 100644 --- a/src/reducers/sponsors_inventory/page-template-list-reducer.js +++ b/src/reducers/sponsors_inventory/page-template-list-reducer.js @@ -114,8 +114,7 @@ const pageTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - pageTemplates: updatedPageTemplates, - totalPageTemplates: state.totalPageTemplates - 1 + pageTemplates: updatedPageTemplates }; } case PAGE_TEMPLATE_UNARCHIVED: { @@ -126,8 +125,7 @@ const pageTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - pageTemplates: updatedPageTemplates, - totalPageTemplates: state.totalPageTemplates - 1 + pageTemplates: updatedPageTemplates }; } default: From e1edafdc8fd52acf3024d026d9382b24a77cd132 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 11 Jun 2026 16:22:26 -0300 Subject: [PATCH 6/8] fix: updte test cases MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Tomás Castillo --- .../components/__test__/inventory-popup.test.js | 4 ++-- .../sponsor-form-add-item-from-inventory-popup.js | 7 ++++++- .../__tests__/sponsor-form-items-list-reducer.test.js | 4 ++-- 3 files changed, 10 insertions(+), 5 deletions(-) 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 427d6d0a3..f602a371c 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 @@ -104,7 +104,7 @@ describe("InventoryPopup", () => { ); const user = userEvent.setup(); - const node = screen.getByTestId("CloseIcon"); + const node = screen.getByTestId("close-dialog"); await user.click(node); expect(onClose).toHaveBeenCalledTimes(1); @@ -161,7 +161,7 @@ describe("InventoryPopup", () => { const textNode = await screen.findByText("1 items selected"); expect(textNode.textContent).toBe("1 items selected"); - const node = screen.getByTestId("CloseIcon"); + const node = screen.getByTestId("close-dialog"); await user.click(node); const textNode2 = screen.getByText("0 items selected"); 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 0b3d89101..f12ca9633 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 @@ -175,7 +175,12 @@ const SponsorFormAddItemFromInventoryPopup = ({ {T.translate("sponsor_form_item_list.add_from_inventory.title")} - + diff --git a/src/reducers/sponsors/__tests__/sponsor-form-items-list-reducer.test.js b/src/reducers/sponsors/__tests__/sponsor-form-items-list-reducer.test.js index 67ce11980..054db2924 100644 --- a/src/reducers/sponsors/__tests__/sponsor-form-items-list-reducer.test.js +++ b/src/reducers/sponsors/__tests__/sponsor-form-items-list-reducer.test.js @@ -310,7 +310,7 @@ describe("SponsorFormItemsListReducer", () => { ); expect(result).toStrictEqual({ ...initialState, - totalCount: 1, + totalCount: 2, items: [ { id: "A", @@ -379,7 +379,7 @@ describe("SponsorFormItemsListReducer", () => { ); expect(result).toStrictEqual({ ...initialState, - totalCount: 1, + totalCount: 2, items: [ { id: "A", From 5476d0079ae83d17ec2f6d09c3d2c869893b4a9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Wed, 17 Jun 2026 03:03:53 -0300 Subject: [PATCH 7/8] fix: simplify getSafePageAfterRemove function, clean template, update reducers 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 | 8 +----- .../form-templates/form-template-list-page.js | 8 +----- .../page-templates/page-template-list-page.js | 8 +----- .../sponsors/show-pages-list-page/index.js | 8 +----- .../sponsor-form-item-list-page/index.js | 8 +----- .../sponsors/sponsor-forms-list-page/index.js | 11 ++++---- .../sponsor-forms-manage-items.js | 8 +----- .../tabs/sponsor-forms-tab/index.js | 11 ++------ .../tabs/sponsor-pages-tab/index.js | 11 ++------ .../sponsors/show-pages-list-reducer.js | 9 +++++-- ...nsor-customized-form-items-list-reducer.js | 15 +++++++++-- .../sponsor-form-items-list-reducer.js | 15 +++++++++-- .../sponsors/sponsor-forms-list-reducer.js | 15 +++++++++-- .../sponsor-page-forms-list-reducer.js | 8 +++++- .../sponsor-page-pages-list-reducer.js | 13 ++++++++-- .../form-template-item-list-reducer.js | 25 ++++++++++++++++--- .../form-template-list-reducer.js | 17 +++++++++++-- .../inventory-item-list-reducer.js | 25 ++++++++++++++++--- .../page-template-list-reducer.js | 25 ++++++++++++++++--- src/utils/__tests__/methods.test.js | 6 ++++- src/utils/methods.js | 6 ++--- 21 files changed, 165 insertions(+), 95 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 2a934215e..97a51305f 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,7 +45,6 @@ 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, @@ -167,15 +166,10 @@ const FormTemplateItemListPage = ({ : archiveFormTemplateItem(formTemplateId, item) ) .then(() => { - const safePage = getSafePageAfterRemove( - totalFormTemplateItems, - perPage, - currentPage - ); getFormTemplateItems( formTemplateId, term, - safePage, + currentPage, perPage, order, orderDir, 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 fadaafc0a..2084c7f81 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,7 +42,6 @@ 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, @@ -156,14 +155,9 @@ const FormTemplateListPage = ({ const handleArchiveItem = (item) => (item.is_archived ? unarchiveFormTemplate(item) : archiveFormTemplate(item)) .then(() => { - const safePage = getSafePageAfterRemove( - totalFormTemplates, - perPage, - currentPage - ); getFormTemplates( term, - safePage, + currentPage, perPage, order, orderDir, 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 d078c3943..af532112d 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,7 +38,6 @@ 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, @@ -125,14 +124,9 @@ const PageTemplateListPage = ({ : archivePageTemplate(item.id) ) .then(() => { - const safePage = getSafePageAfterRemove( - totalPageTemplates, - perPage, - currentPage - ); getPageTemplates( term, - safePage, + currentPage, perPage, order, orderDir, diff --git a/src/pages/sponsors/show-pages-list-page/index.js b/src/pages/sponsors/show-pages-list-page/index.js index 79dd14107..4aca81ede 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -40,7 +40,6 @@ 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 = ({ match, @@ -97,12 +96,7 @@ const ShowPagesListPage = ({ const handleArchiveItem = (item) => (item.is_archived ? unarchiveShowPage(item.id) : archiveShowPage(item.id)) .then(() => { - const safePage = getSafePageAfterRemove( - totalCount, - perPage, - currentPage - ); - getShowPages(term, safePage, perPage, order, orderDir, showArchived); + getShowPages(term, currentPage, perPage, order, orderDir, showArchived); }) .catch(() => getShowPages(term, currentPage, perPage, order, orderDir, showArchived) 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 c4063fbda..68ec0f36c 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/index.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/index.js @@ -42,7 +42,6 @@ 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, @@ -116,14 +115,9 @@ const SponsorFormItemListPage = ({ : archiveSponsorFormItem(formId, item.id) ) .then(() => { - const safePage = getSafePageAfterRemove( - totalCount, - perPage, - currentPage - ); getSponsorFormItems( formId, - safePage, + currentPage, perPage, order, orderDir, diff --git a/src/pages/sponsors/sponsor-forms-list-page/index.js b/src/pages/sponsors/sponsor-forms-list-page/index.js index e529f1b23..ac04c2125 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -42,7 +42,6 @@ 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, @@ -124,12 +123,14 @@ const SponsorFormsListPage = ({ : archiveSponsorForm(item.id) ) .then(() => { - const safePage = getSafePageAfterRemove( - totalCount, + getSponsorForms( + term, + currentPage, perPage, - currentPage + order, + orderDir, + showArchived ); - getSponsorForms(term, safePage, perPage, order, orderDir, showArchived); }) .catch(() => 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 b29e6ea7f..e0c263aea 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,7 +48,6 @@ 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, @@ -157,15 +156,10 @@ const SponsorFormsManageItems = ({ : archiveSponsorCustomizedFormItem(formId, item.id) ) .then(() => { - const safePage = getSafePageAfterRemove( - totalCount, - perPage, - currentPage - ); getSponsorCustomizedFormItems( formId, term, - safePage, + currentPage, perPage, order, orderDir, 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 0f0f6c5d4..394eea4f1 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,7 +38,6 @@ 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, @@ -152,16 +151,10 @@ const SponsorFormsTab = ({ : archiveSponsorCustomizedForm(item.id) ) .then(() => { - const { perPage, order, orderDir, currentPage, totalCount } = - customizedForms; - const safePage = getSafePageAfterRemove( - totalCount, - perPage, - currentPage - ); + const { perPage, order, orderDir, currentPage } = customizedForms; getSponsorCustomizedForms( term, - safePage, + currentPage, perPage, order, orderDir, 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 8155be924..a1f240e6e 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,7 +44,6 @@ 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"; @@ -186,16 +185,10 @@ const SponsorPagesTab = ({ : archiveCustomizedPage(item.id) ) .then(() => { - const { perPage, order, orderDir, currentPage, totalItems } = - customizedPages; - const safePage = getSafePageAfterRemove( - totalItems, - perPage, - currentPage - ); + const { perPage, order, orderDir, currentPage } = customizedPages; return getSponsorCustomizedPages( term, - safePage, + currentPage, perPage, order, orderDir, diff --git a/src/reducers/sponsors/show-pages-list-reducer.js b/src/reducers/sponsors/show-pages-list-reducer.js index 9b69913f3..00b4186a0 100644 --- a/src/reducers/sponsors/show-pages-list-reducer.js +++ b/src/reducers/sponsors/show-pages-list-reducer.js @@ -27,6 +27,7 @@ import { RECEIVE_SUMMIT_SPONSORSHIP_TYPES } from "../../actions/summit-actions"; import { denormalizePageModules } from "../../utils/page-template"; +import { getSafePageAfterRemove } from "../../utils/methods"; const DEFAULT_SHOW_PAGE = { code: "", @@ -109,22 +110,26 @@ const showPagesListReducer = (state = DEFAULT_STATE, action) => { } case SHOW_PAGE_ARCHIVED: { const { pageId } = payload; + const { totalCount, perPage, currentPage } = state; const pages = state.showPages.map((page) => page.id === pageId ? { ...page, is_archived: true } : page ); return { ...state, - showPages: [...pages] + showPages: [...pages], + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) }; } case SHOW_PAGE_UNARCHIVED: { const { pageId } = payload; + const { totalCount, perPage, currentPage } = state; const pages = state.showPages.map((page) => page.id === pageId ? { ...page, is_archived: false } : page ); return { ...state, - showPages: [...pages] + showPages: [...pages], + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) }; } case RECEIVE_SHOW_PAGE: { diff --git a/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js b/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js index a2de1b315..84c58770f 100644 --- a/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js +++ b/src/reducers/sponsors/sponsor-customized-form-items-list-reducer.js @@ -25,6 +25,7 @@ import { RESET_SPONSOR_FORM_MANAGED_ITEM } from "../../actions/sponsor-forms-actions"; import { SET_CURRENT_SUMMIT } from "../../actions/summit-actions"; +import { getSafePageAfterRemove } from "../../utils/methods"; const DEFAULT_ITEM_ENTITY = { code: "", @@ -126,21 +127,31 @@ const sponsorCustomizedFormItemsListReducer = ( } case SPONSOR_CUSTOMIZED_FORM_ITEM_ARCHIVED: { const { id: itemId } = payload.response; + const { totalCount, currentPage, perPage } = state; const items = state.items.map((item) => item.id === itemId ? { ...item, is_archived: true } : item ); - return { ...state, items }; + return { + ...state, + items, + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) + }; } case SPONSOR_CUSTOMIZED_FORM_ITEM_UNARCHIVED: { const { itemId } = payload; + const { totalCount, currentPage, perPage } = state; const items = state.items.map((item) => item.id === itemId ? { ...item, is_archived: false } : item ); - return { ...state, items }; + return { + ...state, + items, + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) + }; } case SPONSOR_FORM_MANAGED_ITEM_UPDATED: { const updatedItem = payload.response; diff --git a/src/reducers/sponsors/sponsor-form-items-list-reducer.js b/src/reducers/sponsors/sponsor-form-items-list-reducer.js index 318ea185f..21e0c7597 100644 --- a/src/reducers/sponsors/sponsor-form-items-list-reducer.js +++ b/src/reducers/sponsors/sponsor-form-items-list-reducer.js @@ -23,6 +23,7 @@ import { SPONSOR_FORM_ITEM_UNARCHIVED } from "../../actions/sponsor-forms-actions"; import { SET_CURRENT_SUMMIT } from "../../actions/summit-actions"; +import { getSafePageAfterRemove } from "../../utils/methods"; const DEFAULT_STATE = { items: [], @@ -117,21 +118,31 @@ const sponsorFormItemsListReducer = (state = DEFAULT_STATE, action) => { } case SPONSOR_FORM_ITEM_ARCHIVED: { const { id: itemId } = payload.response; + const { totalCount, perPage, currentPage } = state; const items = state.items.map((item) => item.id === itemId ? { ...item, is_archived: true } : item ); - return { ...state, items }; + return { + ...state, + items, + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) + }; } case SPONSOR_FORM_ITEM_UNARCHIVED: { const { itemId } = payload; + const { totalCount, perPage, currentPage } = state; const items = state.items.map((item) => item.id === itemId ? { ...item, is_archived: false } : item ); - return { ...state, items }; + return { + ...state, + items, + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) + }; } default: return state; diff --git a/src/reducers/sponsors/sponsor-forms-list-reducer.js b/src/reducers/sponsors/sponsor-forms-list-reducer.js index de8688891..ee3213724 100644 --- a/src/reducers/sponsors/sponsor-forms-list-reducer.js +++ b/src/reducers/sponsors/sponsor-forms-list-reducer.js @@ -28,6 +28,7 @@ import { SET_CURRENT_SUMMIT, RECEIVE_SUMMIT_SPONSORSHIP_TYPES } from "../../actions/summit-actions"; +import { getSafePageAfterRemove } from "../../utils/methods"; export const DEFAULT_STATE = { sponsorForms: [], @@ -152,21 +153,31 @@ const sponsorFormsListReducer = (state = DEFAULT_STATE, action) => { } case SPONSOR_FORM_ARCHIVED: { const { id: formId } = payload.response; + const { totalCount, perPage, currentPage } = state; const sponsorForms = state.sponsorForms.map((item) => item.id === formId ? { ...item, is_archived: true } : item ); - return { ...state, sponsorForms }; + return { + ...state, + sponsorForms, + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) + }; } case SPONSOR_FORM_UNARCHIVED: { const { formId } = payload; + const { totalCount, perPage, currentPage } = state; const sponsorForms = state.sponsorForms.map((item) => item.id === formId ? { ...item, is_archived: false } : item ); - return { ...state, sponsorForms }; + return { + ...state, + sponsorForms, + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) + }; } case SPONSOR_FORM_DELETED: { const { formId } = payload; diff --git a/src/reducers/sponsors/sponsor-page-forms-list-reducer.js b/src/reducers/sponsors/sponsor-page-forms-list-reducer.js index 2f5c4b6da..6853b69cf 100644 --- a/src/reducers/sponsors/sponsor-page-forms-list-reducer.js +++ b/src/reducers/sponsors/sponsor-page-forms-list-reducer.js @@ -24,6 +24,7 @@ import { SPONSOR_CUSTOMIZED_FORM_UPDATED } from "../../actions/sponsor-forms-actions"; import { SET_CURRENT_SUMMIT } from "../../actions/summit-actions"; +import { getSafePageAfterRemove } from "../../utils/methods"; export const DEFAULT_STATE = { managedForms: { @@ -233,6 +234,10 @@ const sponsorPageFormsListReducer = (state = DEFAULT_STATE, action) => { } case SPONSOR_CUSTOMIZED_FORM_ARCHIVED_CHANGED: { const { formId, isArchived } = payload; + const { + customizedForms: { totalCount, currentPage, perPage } + } = state; + const forms = state.customizedForms.forms.map((form) => { if (form.id === formId) { return { @@ -247,7 +252,8 @@ const sponsorPageFormsListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedForms: { ...state.customizedForms, - forms + forms, + currentPage: getSafePageAfterRemove(totalCount, perPage, currentPage) } }; } diff --git a/src/reducers/sponsors/sponsor-page-pages-list-reducer.js b/src/reducers/sponsors/sponsor-page-pages-list-reducer.js index e30e9d436..2a13020e3 100644 --- a/src/reducers/sponsors/sponsor-page-pages-list-reducer.js +++ b/src/reducers/sponsors/sponsor-page-pages-list-reducer.js @@ -29,6 +29,7 @@ import { } from "../../actions/summit-actions"; import { PAGES_MODULE_KINDS } from "../../utils/constants"; import { denormalizePageModules } from "../../utils/page-template"; +import { getSafePageAfterRemove } from "../../utils/methods"; const DEFAULT_PAGE = { code: "", @@ -198,6 +199,9 @@ const sponsorPagePagesListReducer = (state = DEFAULT_STATE, action) => { } case SPONSOR_CUSTOMIZED_PAGE_ARCHIVED: { const { pageId } = payload; + const { + customizedPages: { totalItems, currentPage, perPage } + } = state; const pages = state.customizedPages.pages.map((page) => page.id === pageId ? { ...page, is_archived: true } : page ); @@ -205,12 +209,16 @@ const sponsorPagePagesListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedPages: { ...state.customizedPages, - pages: [...pages] + pages: [...pages], + currentPage: getSafePageAfterRemove(totalItems, perPage, currentPage) } }; } case SPONSOR_CUSTOMIZED_PAGE_UNARCHIVED: { const { pageId } = payload; + const { + customizedPages: { totalItems, currentPage, perPage } + } = state; const pages = state.customizedPages.pages.map((page) => page.id === pageId ? { ...page, is_archived: false } : page ); @@ -218,7 +226,8 @@ const sponsorPagePagesListReducer = (state = DEFAULT_STATE, action) => { ...state, customizedPages: { ...state.customizedPages, - pages: [...pages] + pages: [...pages], + currentPage: getSafePageAfterRemove(totalItems, perPage, currentPage) } }; } diff --git a/src/reducers/sponsors_inventory/form-template-item-list-reducer.js b/src/reducers/sponsors_inventory/form-template-item-list-reducer.js index b408007f2..d040b7a6b 100644 --- a/src/reducers/sponsors_inventory/form-template-item-list-reducer.js +++ b/src/reducers/sponsors_inventory/form-template-item-list-reducer.js @@ -20,6 +20,7 @@ import { FORM_TEMPLATE_ITEM_ARCHIVED, FORM_TEMPLATE_ITEM_UNARCHIVED } from "../../actions/form-template-item-actions"; +import { getSafePageAfterRemove } from "../../utils/methods"; const DEFAULT_STATE = { formTemplateItems: [], @@ -89,10 +90,16 @@ const formTemplateItemListReducer = (state = DEFAULT_STATE, action = {}) => { } case FORM_TEMPLATE_ITEM_DELETED: { const { formTemplateItemId } = payload; + const { totalFormTemplateItems, perPage, currentPage } = state; return { ...state, formTemplateItems: state.formTemplateItems.filter( (a) => a.id !== formTemplateItemId + ), + currentPage: getSafePageAfterRemove( + totalFormTemplateItems, + perPage, + currentPage ) }; } @@ -102,7 +109,7 @@ const formTemplateItemListReducer = (state = DEFAULT_STATE, action = {}) => { } case FORM_TEMPLATE_ITEM_ARCHIVED: { const updatedFormTemplateItem = payload.response; - + const { totalFormTemplateItems, perPage, currentPage } = state; const updatedFormTemplatesItems = state.formTemplateItems.map((item) => item.id === updatedFormTemplateItem.id ? { ...item, is_archived: true } @@ -110,12 +117,17 @@ const formTemplateItemListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - formTemplateItems: updatedFormTemplatesItems + formTemplateItems: updatedFormTemplatesItems, + currentPage: getSafePageAfterRemove( + totalFormTemplateItems, + perPage, + currentPage + ) }; } case FORM_TEMPLATE_ITEM_UNARCHIVED: { const updatedFormTemplateItemId = payload; - + const { totalFormTemplateItems, perPage, currentPage } = state; const updatedFormTemplatesItems = state.formTemplateItems.map((item) => item.id === updatedFormTemplateItemId ? { ...item, is_archived: false } @@ -123,7 +135,12 @@ const formTemplateItemListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - formTemplateItems: updatedFormTemplatesItems + formTemplateItems: updatedFormTemplatesItems, + currentPage: getSafePageAfterRemove( + totalFormTemplateItems, + perPage, + currentPage + ) }; } default: diff --git a/src/reducers/sponsors_inventory/form-template-list-reducer.js b/src/reducers/sponsors_inventory/form-template-list-reducer.js index 6b09f7aa5..ea2cf493e 100644 --- a/src/reducers/sponsors_inventory/form-template-list-reducer.js +++ b/src/reducers/sponsors_inventory/form-template-list-reducer.js @@ -20,6 +20,7 @@ import { FORM_TEMPLATE_ARCHIVED, FORM_TEMPLATE_UNARCHIVED } from "../../actions/form-template-actions"; +import { getSafePageAfterRemove } from "../../utils/methods"; const DEFAULT_STATE = { formTemplates: [], @@ -99,6 +100,7 @@ const formTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { } case FORM_TEMPLATE_ARCHIVED: { const updatedFormTemplate = payload.response; + const { totalFormTemplates, currentPage, perPage } = state; const updatedFormTemplates = state.formTemplates.map((item) => item.id === updatedFormTemplate.id @@ -107,11 +109,17 @@ const formTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - formTemplates: updatedFormTemplates + formTemplates: updatedFormTemplates, + currentPage: getSafePageAfterRemove( + totalFormTemplates, + perPage, + currentPage + ) }; } case FORM_TEMPLATE_UNARCHIVED: { const updatedFormTemplateId = payload; + const { totalFormTemplates, currentPage, perPage } = state; const updatedFormTemplates = state.formTemplates.map((item) => item.id === updatedFormTemplateId @@ -120,7 +128,12 @@ const formTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - formTemplates: updatedFormTemplates + formTemplates: updatedFormTemplates, + currentPage: getSafePageAfterRemove( + totalFormTemplates, + perPage, + currentPage + ) }; } case CHANGE_FORM_TEMPLATE_SEARCH_TERM: { diff --git a/src/reducers/sponsors_inventory/inventory-item-list-reducer.js b/src/reducers/sponsors_inventory/inventory-item-list-reducer.js index 1d2aa8452..955ea04bb 100644 --- a/src/reducers/sponsors_inventory/inventory-item-list-reducer.js +++ b/src/reducers/sponsors_inventory/inventory-item-list-reducer.js @@ -25,6 +25,7 @@ import { INVENTORY_ITEM_UNARCHIVED, INVENTORY_ITEM_IMAGE_SAVED } from "../../actions/inventory-item-actions"; +import { getSafePageAfterRemove } from "../../utils/methods"; const DEFAULT_STATE = { inventoryItems: [], @@ -102,10 +103,16 @@ const inventoryItemListReducer = (state = DEFAULT_STATE, action = {}) => { } case INVENTORY_ITEM_DELETED: { const { inventoryItemId } = payload; + const { totalInventoryItems, perPage, currentPage } = state; return { ...state, inventoryItems: state.inventoryItems.filter( (a) => a.id !== inventoryItemId + ), + currentPage: getSafePageAfterRemove( + totalInventoryItems, + perPage, + currentPage ) }; } @@ -199,24 +206,34 @@ const inventoryItemListReducer = (state = DEFAULT_STATE, action = {}) => { } case INVENTORY_ITEM_ARCHIVED: { const updatedItem = payload.response; - + const { totalInventoryItems, perPage, currentPage } = state; const updatedInventoryItems = state.inventoryItems.map((item) => item.id === updatedItem.id ? { ...item, is_archived: true } : item ); return { ...state, - inventoryItems: updatedInventoryItems + inventoryItems: updatedInventoryItems, + currentPage: getSafePageAfterRemove( + totalInventoryItems, + perPage, + currentPage + ) }; } case INVENTORY_ITEM_UNARCHIVED: { const updatedItemId = payload; - + const { totalInventoryItems, perPage, currentPage } = state; const updatedInventoryItems = state.inventoryItems.map((item) => item.id === updatedItemId ? { ...item, is_archived: false } : item ); return { ...state, - inventoryItems: updatedInventoryItems + inventoryItems: updatedInventoryItems, + currentPage: getSafePageAfterRemove( + totalInventoryItems, + perPage, + currentPage + ) }; } case INVENTORY_ITEM_IMAGE_SAVED: { diff --git a/src/reducers/sponsors_inventory/page-template-list-reducer.js b/src/reducers/sponsors_inventory/page-template-list-reducer.js index 206696b2e..ebefd76a7 100644 --- a/src/reducers/sponsors_inventory/page-template-list-reducer.js +++ b/src/reducers/sponsors_inventory/page-template-list-reducer.js @@ -20,6 +20,7 @@ import { PAGE_TEMPLATE_UNARCHIVED } from "../../actions/page-template-actions"; import { PAGES_MODULE_KINDS } from "../../utils/constants"; +import { getSafePageAfterRemove } from "../../utils/methods"; const DEFAULT_STATE = { pageTemplates: [], @@ -97,16 +98,22 @@ const pageTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { } case PAGE_TEMPLATE_DELETED: { const { pageTemplateId } = payload; + const { totalPageTemplates, perPage, currentPage } = state; return { ...state, pageTemplates: state.pageTemplates.filter( (a) => a.id !== pageTemplateId + ), + currentPage: getSafePageAfterRemove( + totalPageTemplates, + perPage, + currentPage ) }; } case PAGE_TEMPLATE_ARCHIVED: { const updatedFormTemplate = payload.response; - + const { totalPageTemplates, perPage, currentPage } = state; const updatedPageTemplates = state.pageTemplates.map((item) => item.id === updatedFormTemplate.id ? { ...item, is_archived: true } @@ -114,18 +121,28 @@ const pageTemplateListReducer = (state = DEFAULT_STATE, action = {}) => { ); return { ...state, - pageTemplates: updatedPageTemplates + pageTemplates: updatedPageTemplates, + currentPage: getSafePageAfterRemove( + totalPageTemplates, + perPage, + currentPage + ) }; } case PAGE_TEMPLATE_UNARCHIVED: { const { pageTemplateId } = payload; - + const { totalPageTemplates, perPage, currentPage } = state; const updatedPageTemplates = state.pageTemplates.map((item) => item.id === pageTemplateId ? { ...item, is_archived: false } : item ); return { ...state, - pageTemplates: updatedPageTemplates + pageTemplates: updatedPageTemplates, + currentPage: getSafePageAfterRemove( + totalPageTemplates, + perPage, + currentPage + ) }; } default: diff --git a/src/utils/__tests__/methods.test.js b/src/utils/__tests__/methods.test.js index e77c8108b..edc7c7385 100644 --- a/src/utils/__tests__/methods.test.js +++ b/src/utils/__tests__/methods.test.js @@ -139,11 +139,15 @@ describe("getSafePageAfterRemove", () => { expect(getSafePageAfterRemove(12, 10, 2)).toBe(2); }); - it("should go back one page when removing the last item on the last page", () => { + it("should go back one page when the removal empties the last page", () => { expect(getSafePageAfterRemove(21, 10, 3)).toBe(2); }); it("should never return a page lower than 1", () => { expect(getSafePageAfterRemove(1, 10, 1)).toBe(1); }); + + it("should stay on current page when removal does not reduce page count", () => { + expect(getSafePageAfterRemove(20, 10, 2)).toBe(2); + }); }); diff --git a/src/utils/methods.js b/src/utils/methods.js index a14ade3ff..418a1e9d3 100644 --- a/src/utils/methods.js +++ b/src/utils/methods.js @@ -638,8 +638,6 @@ export const getFileUploadAllowedExtensions = () => window.FILE_UPLOAD_ALLOWED_EXTENSIONS?.split(",").filter(Boolean) ?? []; 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); + const pageCountDecreases = Number.isInteger((totalCount - 1) / perPage); + return pageCountDecreases && currentPage > 1 ? currentPage - 1 : currentPage; }; From 6feecf3e366ca52a2ae4abe8b41ceb8d12be0dae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tom=C3=A1s=20Castillo?= Date: Thu, 18 Jun 2026 12:45:11 -0300 Subject: [PATCH 8/8] fix: remove safePage from inventory list, clear catch refresh table 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 | 32 ++++++----------- .../form-templates/form-template-list-page.js | 32 +++++++---------- .../inventory/inventory-list-page.js | 35 +++++-------------- .../page-templates/page-template-list-page.js | 29 +++++---------- .../sponsors/show-pages-list-page/index.js | 13 ++++--- .../sponsor-form-item-list-page/index.js | 29 +++++---------- .../sponsors/sponsor-forms-list-page/index.js | 29 +++++---------- .../sponsor-forms-manage-items.js | 32 ++++++----------- .../tabs/sponsor-forms-tab/index.js | 34 ++++++------------ .../tabs/sponsor-pages-tab/index.js | 34 ++++++------------ 10 files changed, 96 insertions(+), 203 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 97a51305f..e43552e5e 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 @@ -164,29 +164,17 @@ const FormTemplateItemListPage = ({ (item.is_archived ? unarchiveFormTemplateItem(formTemplateId, item) : archiveFormTemplateItem(formTemplateId, item) - ) - .then(() => { - getFormTemplateItems( - formTemplateId, - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => - getFormTemplateItems( - formTemplateId, - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ) + ).then(() => { + getFormTemplateItems( + formTemplateId, + term, + currentPage, + 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 2084c7f81..4bd90e37d 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 @@ -153,27 +153,19 @@ const FormTemplateListPage = ({ }; const handleArchiveItem = (item) => - (item.is_archived ? unarchiveFormTemplate(item) : archiveFormTemplate(item)) - .then(() => { - getFormTemplates( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => - getFormTemplates( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ) + (item.is_archived + ? unarchiveFormTemplate(item) + : archiveFormTemplate(item) + ).then(() => { + getFormTemplates( + term, + currentPage, + 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 5a4e55f68..8478e5989 100644 --- a/src/pages/sponsors-global/inventory/inventory-list-page.js +++ b/src/pages/sponsors-global/inventory/inventory-list-page.js @@ -44,7 +44,6 @@ 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; @@ -266,32 +265,16 @@ const InventoryListPage = ({ (item.is_archived ? unarchiveInventoryItem(item) : archiveInventoryItem(item) - ) - .then(() => { - const safePage = getSafePageAfterRemove( - totalInventoryItems, - perPage, - currentPage - ); - getInventoryItems( - term, - safePage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => - getInventoryItems( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ) + ).then(() => { + getInventoryItems( + term, + currentPage, + 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 af532112d..1da0b1718 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 @@ -122,27 +122,16 @@ const PageTemplateListPage = ({ (item.is_archived ? unarchivePageTemplate(item.id) : archivePageTemplate(item.id) - ) - .then(() => { - getPageTemplates( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => - getPageTemplates( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ) + ).then(() => { + getPageTemplates( + term, + currentPage, + 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 4aca81ede..b694e285a 100644 --- a/src/pages/sponsors/show-pages-list-page/index.js +++ b/src/pages/sponsors/show-pages-list-page/index.js @@ -94,13 +94,12 @@ const ShowPagesListPage = ({ }; const handleArchiveItem = (item) => - (item.is_archived ? unarchiveShowPage(item.id) : archiveShowPage(item.id)) - .then(() => { - getShowPages(term, currentPage, perPage, order, orderDir, showArchived); - }) - .catch(() => - getShowPages(term, currentPage, perPage, order, orderDir, showArchived) - ); + (item.is_archived + ? unarchiveShowPage(item.id) + : archiveShowPage(item.id) + ).then(() => { + getShowPages(term, currentPage, 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 68ec0f36c..1a0aeb1e2 100644 --- a/src/pages/sponsors/sponsor-form-item-list-page/index.js +++ b/src/pages/sponsors/sponsor-form-item-list-page/index.js @@ -113,27 +113,16 @@ const SponsorFormItemListPage = ({ (item.is_archived ? unarchiveSponsorFormItem(formId, item.id) : archiveSponsorFormItem(formId, item.id) - ) - .then(() => { - getSponsorFormItems( - formId, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => - getSponsorFormItems( - formId, - currentPage, - perPage, - order, - orderDir, - showArchived - ) + ).then(() => { + getSponsorFormItems( + formId, + currentPage, + 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 ac04c2125..a7740253f 100644 --- a/src/pages/sponsors/sponsor-forms-list-page/index.js +++ b/src/pages/sponsors/sponsor-forms-list-page/index.js @@ -121,27 +121,16 @@ const SponsorFormsListPage = ({ (item.is_archived ? unarchiveSponsorForm(item.id) : archiveSponsorForm(item.id) - ) - .then(() => { - getSponsorForms( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => - getSponsorForms( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ) + ).then(() => { + getSponsorForms( + term, + currentPage, + 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 e0c263aea..382ad9c7d 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 @@ -154,29 +154,17 @@ const SponsorFormsManageItems = ({ (item.is_archived ? unarchiveSponsorCustomizedFormItem(formId, item.id) : archiveSponsorCustomizedFormItem(formId, item.id) - ) - .then(() => { - getSponsorCustomizedFormItems( - formId, - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => - getSponsorCustomizedFormItems( - formId, - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ) + ).then(() => { + getSponsorCustomizedFormItems( + formId, + term, + currentPage, + 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 394eea4f1..c95e0e4c8 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 @@ -149,29 +149,17 @@ const SponsorFormsTab = ({ (item.is_archived ? unarchiveSponsorCustomizedForm(item.id) : archiveSponsorCustomizedForm(item.id) - ) - .then(() => { - const { perPage, order, orderDir, currentPage } = customizedForms; - getSponsorCustomizedForms( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => { - const { perPage, order, orderDir, currentPage } = customizedForms; - getSponsorCustomizedForms( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }); + ).then(() => { + const { perPage, order, orderDir, currentPage } = customizedForms; + getSponsorCustomizedForms( + term, + currentPage, + 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 a1f240e6e..2c5e82b44 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,29 +183,17 @@ const SponsorPagesTab = ({ (item.is_archived ? unarchiveCustomizedPage(item.id) : archiveCustomizedPage(item.id) - ) - .then(() => { - const { perPage, order, orderDir, currentPage } = customizedPages; - return getSponsorCustomizedPages( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }) - .catch(() => { - const { perPage, order, orderDir, currentPage } = customizedPages; - getSponsorCustomizedPages( - term, - currentPage, - perPage, - order, - orderDir, - showArchived - ); - }); + ).then(() => { + const { perPage, order, orderDir, currentPage } = customizedPages; + return getSponsorCustomizedPages( + term, + currentPage, + perPage, + order, + orderDir, + showArchived + ); + }); const handleManagedEdit = (item) => { getSponsorManagedPage(item.id).then(() => setOpenPopup("managedPagePopup"));