diff --git a/src/actions/sponsor-forms-actions.js b/src/actions/sponsor-forms-actions.js
index 951db2846..0a43142a5 100644
--- a/src/actions/sponsor-forms-actions.js
+++ b/src/actions/sponsor-forms-actions.js
@@ -94,7 +94,8 @@ export const SPONSOR_CUSTOMIZED_FORM_ITEMS_ADDED =
"SPONSOR_CUSTOMIZED_FORM_ITEMS_ADDED";
export const RESET_SPONSOR_FORM_MANAGED_ITEM =
"RESET_SPONSOR_FORM_MANAGED_ITEM";
-
+export const SPONSOR_CUSTOMIZED_FORM_ITEM_IMAGE_DELETED =
+ "SPONSOR_CUSTOMIZED_FORM_ITEM_IMAGE_DELETED";
// ITEMS
export const REQUEST_SPONSOR_FORM_ITEMS = "REQUEST_SPONSOR_FORM_ITEMS";
export const RECEIVE_SPONSOR_FORM_ITEMS = "RECEIVE_SPONSOR_FORM_ITEMS";
@@ -104,6 +105,7 @@ export const RESET_SPONSOR_FORM_ITEM = "RESET_SPONSOR_FORM_ITEM";
export const SPONSOR_FORM_ITEM_DELETED = "SPONSOR_FORM_ITEM_DELETED";
export const SPONSOR_FORM_ITEM_IMAGES_UPDATED =
"SPONSOR_FORM_ITEM_IMAGES_UPDATED";
+export const SPONSOR_FORM_ITEM_FILE_DELETED = "SPONSOR_FORM_ITEM_FILE_DELETED";
export const SPONSOR_FORM_ITEMS_ADDED = "SPONSOR_FORM_ITEMS_ADDED";
export const SPONSOR_FORM_ITEM_ARCHIVED = "SPONSOR_FORM_ITEM_ARCHIVED";
export const SPONSOR_FORM_ITEM_UNARCHIVED = "SPONSOR_FORM_ITEM_UNARCHIVED";
@@ -783,7 +785,8 @@ export const getSponsorCustomizedFormItems =
const params = {
page,
per_page: perPage,
- access_token: accessToken
+ access_token: accessToken,
+ expand: "images"
};
filter.push(`is_archived==${showArchived ? 1 : 0}`);
@@ -1172,6 +1175,26 @@ const saveItemImages =
return Promise.all(promises);
};
+export const removeItemFile =
+ (formId, formItemId, fileId) => async (dispatch, getState) => {
+ const { currentSummitState } = getState();
+ const { currentSummit } = currentSummitState;
+ const accessToken = await getAccessTokenSafely();
+ const params = { access_token: accessToken };
+
+ dispatch(startLoading());
+
+ return deleteRequest(
+ null,
+ createAction(SPONSOR_FORM_ITEM_FILE_DELETED),
+ `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/show-forms/${formId}/items/${formItemId}/images/${fileId}`,
+ null,
+ snackbarErrorHandler
+ )(params)(dispatch).finally(() => {
+ dispatch(stopLoading());
+ });
+ };
+
export const saveSponsorFormItem =
(formId, entity) => async (dispatch, getState) => {
const { currentSummitState } = getState();
@@ -1431,9 +1454,12 @@ export const saveSponsorFormManagedItem =
snackbarErrorHandler,
entity
)(params)(dispatch)
- .then(() => {
- dispatch(snackbarSuccessHandler(successMessage));
- })
+ .then(({ response }) =>
+ saveImages(response.id).then(() => {
+ dispatch(snackbarSuccessHandler(successMessage));
+ return response;
+ })
+ )
.finally(() => {
dispatch(stopLoading());
});
@@ -1599,3 +1625,26 @@ export const unarchiveSponsorCustomizedFormItem =
dispatch(stopLoading());
});
};
+
+export const removeSponsorCustomizedFormItemImages =
+ (formId, formItemId, fileId) => async (dispatch, getState) => {
+ const { currentSummitState, currentSponsorState } = getState();
+ const { currentSummit } = currentSummitState;
+ const {
+ entity: { id: sponsorId }
+ } = currentSponsorState;
+ const accessToken = await getAccessTokenSafely();
+ const params = { access_token: accessToken };
+
+ dispatch(startLoading());
+
+ return deleteRequest(
+ null,
+ createAction(SPONSOR_CUSTOMIZED_FORM_ITEM_IMAGE_DELETED),
+ `${window.PURCHASES_API_URL}/api/v1/summits/${currentSummit.id}/sponsors/${sponsorId}/sponsor-forms/${formId}/items/${formItemId}/images/${fileId}`,
+ null,
+ snackbarErrorHandler
+ )(params)(dispatch).finally(() => {
+ dispatch(stopLoading());
+ });
+ };
diff --git a/src/pages/sponsors-global/form-templates/form-template-item-list-page.js b/src/pages/sponsors-global/form-templates/form-template-item-list-page.js
index 90263fa87..415c4dab5 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
@@ -189,6 +189,10 @@ const FormTemplateItemListPage = ({
setShowInventoryItemModal(false);
};
+ const handleRemoveImage = (imageId) => {
+ deleteItemImage(formTemplateId, currentFormTemplateItem.id, imageId);
+ };
+
const columns = [
{
columnKey: "code",
@@ -321,7 +325,7 @@ const FormTemplateItemListPage = ({
onClose={() => setShowInventoryItemModal(false)}
onMetaFieldTypeDeleted={deleteItemMetaFieldType}
onMetaFieldTypeValueDeleted={deleteItemMetaFieldTypeValue}
- onImageDeleted={deleteItemImage}
+ onImageDeleted={handleRemoveImage}
/>
)}
diff --git a/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js b/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js
index ed5e0640b..4c2a0a8ab 100644
--- a/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js
+++ b/src/pages/sponsors-global/form-templates/sponsor-inventory-popup.js
@@ -43,6 +43,7 @@ const SponsorItemDialog = ({
onSave,
onMetaFieldTypeDeleted,
onMetaFieldTypeValueDeleted,
+ onImageDeleted,
entity: initialEntity
}) => {
const formik = useFormik({
@@ -83,6 +84,10 @@ const SponsorItemDialog = ({
onClose();
};
+ const handleIDeleteImage = (id) => {
+ if (id && onImageDeleted) onImageDeleted(id);
+ };
+
return (
@@ -242,6 +248,7 @@ SponsorItemDialog.propTypes = {
onSave: PropTypes.func.isRequired,
onMetaFieldTypeDeleted: PropTypes.func,
onMetaFieldTypeValueDeleted: PropTypes.func,
+ onImageDeleted: PropTypes.func,
entity: PropTypes.object
};
diff --git a/src/pages/sponsors-global/inventory/inventory-list-page.js b/src/pages/sponsors-global/inventory/inventory-list-page.js
index 2dfb4964a..bddd16f03 100644
--- a/src/pages/sponsors-global/inventory/inventory-list-page.js
+++ b/src/pages/sponsors-global/inventory/inventory-list-page.js
@@ -152,6 +152,10 @@ const InventoryListPage = ({
? unarchiveInventoryItem(item)
: archiveInventoryItem(item);
+ const handleRemoveImage = (imageId) => {
+ deleteInventoryItemImage(currentInventoryItem.id, imageId);
+ };
+
const columns = [
{
columnKey: "code",
@@ -293,7 +297,7 @@ const InventoryListPage = ({
onClose={handleClose}
onMetaFieldTypeDeleted={deleteInventoryItemMetaFieldType}
onMetaFieldTypeValueDeleted={deleteInventoryItemMetaFieldTypeValue}
- onImageDeleted={deleteInventoryItemImage}
+ onImageDeleted={handleRemoveImage}
/>
)}
@@ -314,7 +318,6 @@ export default connect(mapStateToProps, {
getInventoryItem,
resetInventoryItemForm,
saveInventoryItem,
-
deleteInventoryItemImage,
deleteInventoryItemMetaFieldType,
deleteInventoryItemMetaFieldTypeValue,
diff --git a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js
index 13c6edd2e..fcdc3577b 100644
--- a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js
+++ b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-form.js
@@ -34,7 +34,7 @@ const buildInitialValues = (data) => ({ ...data });
addIssAfterDateFieldValidator();
-const SponsorFormItemForm = ({ initialValues, onSubmit }) => {
+const SponsorFormItemForm = ({ initialValues, onSubmit, onImageDeleted }) => {
const formik = useFormik({
initialValues: buildInitialValues(initialValues),
validationSchema: yup.object({
@@ -57,6 +57,10 @@ const SponsorFormItemForm = ({ initialValues, onSubmit }) => {
// SCROLL TO ERROR
useScrollToError(formik);
+ const handleDeleteImage = (id) => {
+ if (id && onImageDeleted) onImageDeleted(id);
+ };
+
return (
{
id="item-image-upload"
name="images"
maxFiles={MAX_INVENTORY_IMAGES_UPLOAD_QTY}
+ onDelete={handleDeleteImage}
allowedExtensions={getFileUploadAllowedExtensions()}
/>
diff --git a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-popup.js b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-popup.js
index e62317851..a5f613d1d 100644
--- a/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-popup.js
+++ b/src/pages/sponsors/sponsor-form-item-list-page/components/sponsor-form-item-popup.js
@@ -13,6 +13,7 @@ import CloseIcon from "@mui/icons-material/Close";
import {
resetSponsorFormItem,
saveSponsorFormItem,
+ removeItemFile,
updateSponsorFormItem
} from "../../../../actions/sponsor-forms-actions";
import SponsorFormItemForm from "./sponsor-form-item-form";
@@ -24,7 +25,8 @@ const SponsorFormItemPopup = ({
onClose,
resetSponsorFormItem,
saveSponsorFormItem,
- updateSponsorFormItem
+ updateSponsorFormItem,
+ removeItemFile
}) => {
const handleClose = () => {
// clear form from reducer
@@ -40,6 +42,10 @@ const SponsorFormItemPopup = ({
});
};
+ const handleRemoveImage = (imageId) => {
+ removeItemFile(formId, item.id, imageId);
+ };
+
return (
);
};
@@ -81,5 +91,6 @@ const mapStateToProps = ({
export default connect(mapStateToProps, {
resetSponsorFormItem,
saveSponsorFormItem,
- updateSponsorFormItem
+ updateSponsorFormItem,
+ removeItemFile
})(SponsorFormItemPopup);
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..ff6e7113c 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
@@ -36,7 +36,8 @@ import {
deleteSponsorFormManagedItem,
resetSponsorFormManagedItem,
unarchiveSponsorCustomizedFormItem,
- getSponsorFormManagedItem
+ getSponsorFormManagedItem,
+ removeSponsorCustomizedFormItemImages
} from "../../../../../../../actions/sponsor-forms-actions";
import CustomAlert from "../../../../../../../components/mui/custom-alert";
import SponsorInventoryDialog from "../../../../../../sponsors-global/form-templates/sponsor-inventory-popup";
@@ -67,7 +68,8 @@ const SponsorFormsManageItems = ({
deleteSponsorFormManagedItem,
archiveSponsorCustomizedFormItem,
unarchiveSponsorCustomizedFormItem,
- getSponsorFormManagedItem
+ getSponsorFormManagedItem,
+ removeSponsorCustomizedFormItemImages
}) => {
const [openPopup, setOpenPopup] = useState(null);
@@ -202,6 +204,14 @@ const SponsorFormsManageItems = ({
);
};
+ const handleImageRemove = (imageId) => {
+ removeSponsorCustomizedFormItemImages(
+ formId,
+ currentInventoryItem.id,
+ imageId
+ );
+ };
+
const sponsorItemColumns = [
{
columnKey: "code",
@@ -384,6 +394,7 @@ const SponsorFormsManageItems = ({
entity={currentInventoryItem}
onSave={handleItemSave}
onClose={handleClose}
+ onImageDeleted={handleImageRemove}
/>
)}
@@ -411,7 +422,8 @@ export default Restrict(
deleteSponsorFormManagedItem,
getSponsorFormManagedItem,
archiveSponsorCustomizedFormItem,
- unarchiveSponsorCustomizedFormItem
+ unarchiveSponsorCustomizedFormItem,
+ removeSponsorCustomizedFormItemImages
})(SponsorFormsManageItems),
ACCESS_ROUTES.ADMIN_SPONSORS
);