diff --git a/src/actions/sponsor-pages-actions.js b/src/actions/sponsor-pages-actions.js
index 78091a090..810640027 100644
--- a/src/actions/sponsor-pages-actions.js
+++ b/src/actions/sponsor-pages-actions.js
@@ -15,6 +15,7 @@ import {
createAction,
getRequest,
postRequest,
+ deleteRequest,
startLoading,
stopLoading,
authErrorHandler,
@@ -23,12 +24,17 @@ import {
import T from "i18n-react/dist/i18n-react";
import { getAccessTokenSafely } from "../utils/methods";
import { snackbarErrorHandler, snackbarSuccessHandler } from "./base-actions";
-import { DEFAULT_CURRENT_PAGE, DEFAULT_ORDER_DIR, DEFAULT_PER_PAGE } from "../utils/constants";
+import {
+ DEFAULT_CURRENT_PAGE,
+ DEFAULT_ORDER_DIR,
+ DEFAULT_PER_PAGE
+} from "../utils/constants";
export const GLOBAL_PAGE_CLONED = "GLOBAL_PAGE_CLONED";
export const REQUEST_SPONSOR_MANAGED_PAGES = "REQUEST_SPONSOR_MANAGED_PAGES";
export const RECEIVE_SPONSOR_MANAGED_PAGES = "RECEIVE_SPONSOR_MANAGED_PAGES";
+export const SPONSOR_MANAGED_PAGE_DELETED = "SPONSOR_MANAGED_PAGE_DELETED";
export const REQUEST_SPONSOR_CUSTOMIZED_PAGES =
"REQUEST_SPONSOR_CUSTOMIZED_PAGES";
@@ -107,7 +113,7 @@ export const getSponsorManagedPages =
const params = {
page,
- fields: "id,code,name,kind,modules_count,allowed_add_ons",
+ fields: "id,code,name,kind,modules_count,allowed_add_ons,assigned_type",
per_page: perPage,
access_token: accessToken
};
@@ -135,6 +141,35 @@ export const getSponsorManagedPages =
});
};
+export const deleteSponsorManagedPage =
+ (pageId) => async (dispatch, getState) => {
+ const { currentSummitState } = getState();
+ const accessToken = await getAccessTokenSafely();
+ const { currentSummit } = currentSummitState;
+ const params = { access_token: accessToken };
+
+ dispatch(startLoading());
+
+ return deleteRequest(
+ null,
+ createAction(SPONSOR_MANAGED_PAGE_DELETED)({ pageId }),
+ `${window.SPONSOR_PAGES_API_URL}/api/v1/summits/${currentSummit.id}/managed-pages/${pageId}`,
+ null,
+ snackbarErrorHandler
+ )(params)(dispatch)
+ .then(() => {
+ dispatch(
+ snackbarSuccessHandler({
+ title: T.translate("general.success"),
+ html: T.translate("show_pages.page_delete_success")
+ })
+ );
+ })
+ .finally(() => {
+ dispatch(stopLoading());
+ });
+ };
+
/* ************************************************************************ */
/* CUSTOMIZED PAGES */
/* ************************************************************************ */
diff --git a/src/components/mui/table/mui-table.js b/src/components/mui/table/mui-table.js
index 5f8b9d55b..1bff9c33c 100644
--- a/src/components/mui/table/mui-table.js
+++ b/src/components/mui/table/mui-table.js
@@ -43,6 +43,7 @@ const MuiTable = ({
onEdit,
onArchive,
onDelete,
+ canDelete = () => true,
deleteDialogTitle = null,
deleteDialogBody = null
}) => {
@@ -244,12 +245,14 @@ const MuiTable = ({
: {})
}}
>
- handleDelete(row)}
- >
-
-
+ {canDelete(row) && (
+ handleDelete(row)}
+ >
+
+
+ )}
)}
diff --git a/src/pages/sponsors/sponsor-pages-tab/index.js b/src/pages/sponsors/sponsor-pages-tab/index.js
index f14224c8f..91b4e2ae9 100644
--- a/src/pages/sponsors/sponsor-pages-tab/index.js
+++ b/src/pages/sponsors/sponsor-pages-tab/index.js
@@ -25,12 +25,16 @@ import {
import AddIcon from "@mui/icons-material/Add";
import {
getSponsorManagedPages,
- getSponsorCustomizedPages
+ getSponsorCustomizedPages,
+ deleteSponsorManagedPage
} from "../../../actions/sponsor-pages-actions";
import CustomAlert from "../../../components/mui/custom-alert";
import SearchInput from "../../../components/mui/search-input";
import MuiTable from "../../../components/mui/table/mui-table";
-import { DEFAULT_CURRENT_PAGE } from "../../../utils/constants";
+import {
+ DEFAULT_CURRENT_PAGE,
+ SPONSOR_MANAGED_PAGE_ASSIGNMENT
+} from "../../../utils/constants";
const SponsorPagesTab = ({
term,
@@ -38,7 +42,8 @@ const SponsorPagesTab = ({
managedPages,
customizedPages,
getSponsorManagedPages,
- getSponsorCustomizedPages
+ getSponsorCustomizedPages,
+ deleteSponsorManagedPage
}) => {
useEffect(() => {
getSponsorManagedPages();
@@ -151,6 +156,17 @@ const SponsorPagesTab = ({
};
const handleManagedDelete = (itemId) => {
+ deleteSponsorManagedPage(itemId).then(() => {
+ const { perPage, order, orderDir } = managedPages;
+ getSponsorManagedPages(
+ term,
+ DEFAULT_CURRENT_PAGE,
+ perPage,
+ order,
+ orderDir,
+ hideArchived
+ );
+ });
console.log("DELETE MANAGED ", itemId);
};
@@ -333,6 +349,9 @@ const SponsorPagesTab = ({
onSort={handleManagedSort}
onEdit={handleManagedEdit}
onDelete={handleManagedDelete}
+ canDelete={(row) =>
+ row.assigned_type === SPONSOR_MANAGED_PAGE_ASSIGNMENT.EXPLICIT
+ }
onArchive={handleArchiveManagedPage}
/>
@@ -346,5 +365,6 @@ const mapStateToProps = ({ sponsorPagePagesListState }) => ({
export default connect(mapStateToProps, {
getSponsorManagedPages,
- getSponsorCustomizedPages
+ getSponsorCustomizedPages,
+ deleteSponsorManagedPage
})(SponsorPagesTab);
diff --git a/src/utils/constants.js b/src/utils/constants.js
index 3983fbeb5..2ba8e8a66 100644
--- a/src/utils/constants.js
+++ b/src/utils/constants.js
@@ -264,3 +264,8 @@ export const SPONSOR_USER_ASSIGNMENT_TYPE = {
EXISTING: "existing",
NEW: "new"
};
+
+export const SPONSOR_MANAGED_PAGE_ASSIGNMENT = {
+ EXPLICIT: "Explicit",
+ IMPLICIT: "Implicit"
+};