From 1e88d5ae1b2dcafa6cb89085b3e0f0372c49a2b5 Mon Sep 17 00:00:00 2001 From: Patrick Fic <> Date: Fri, 17 Jun 2022 15:22:29 -0700 Subject: [PATCH] IO-1937 Add 10mb limit for emails. --- bodyshop_translations.babel | 21 + .../email-documents.component.jsx | 12 + .../email-overlay/email-overlay.component.jsx | 17 + .../error-boundary.component.jsx | 1 + ...s-documents-gallery.external.component.jsx | 1 + .../pages/manage/manage.page.component.jsx | 7 +- client/src/translations/en_us/common.json | 3 +- client/src/translations/es/common.json | 3 +- client/src/translations/fr/common.json | 3 +- client/src/utils/RenderTemplate.js | 2 +- package-lock.json | 12049 ++++++++++++++++ server/email/sendemail.js | 6 +- yarn.lock | 6670 ++++----- 13 files changed, 15461 insertions(+), 3334 deletions(-) create mode 100644 package-lock.json diff --git a/bodyshop_translations.babel b/bodyshop_translations.babel index 9627b84dd..93d42f810 100644 --- a/bodyshop_translations.babel +++ b/bodyshop_translations.babel @@ -15374,6 +15374,27 @@ + + sizelimit + false + + + + + + en-US + false + + + es-MX + false + + + fr-CA + false + + + diff --git a/client/src/components/email-documents/email-documents.component.jsx b/client/src/components/email-documents/email-documents.component.jsx index abbcfea0d..7b3f393ae 100644 --- a/client/src/components/email-documents/email-documents.component.jsx +++ b/client/src/components/email-documents/email-documents.component.jsx @@ -38,6 +38,12 @@ export function EmailDocumentsComponent({ nextFetchPolicy: "network-only", }); + console.log( + selectedMedia && + selectedMedia + .filter((s) => s.isSelected) + .reduce((acc, val) => (acc = acc + val.size), 0) + ); return ( {loading && } @@ -45,6 +51,12 @@ export function EmailDocumentsComponent({ {selectedMedia.filter((s) => s.isSelected).length >= 10 ? ( {t("messaging.labels.maxtenimages")} ) : null} + {selectedMedia && + selectedMedia + .filter((s) => s.isSelected) + .reduce((acc, val) => (acc = acc + val.size), 0) >= 9961472 ? ( + {t("general.errors.sizelimit")} + ) : null} {data && ( ({ + validator(rule, value) { + const totalSize = value.reduce( + (acc, val) => (acc = acc + val.size), + 0 + ); + + const limit = 9961472; + + if (totalSize > limit) { + return Promise.reject(t("general.errors.sizelimit")); + } + return Promise.resolve(); + }, + }), + ]} > getDerivedStateFromError -> error", error); + return { hasErrored: true, error: error }; } diff --git a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.external.component.jsx b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.external.component.jsx index 278fe59d9..fe23d8ceb 100644 --- a/client/src/components/jobs-documents-gallery/jobs-documents-gallery.external.component.jsx +++ b/client/src/components/jobs-documents-gallery/jobs-documents-gallery.external.component.jsx @@ -25,6 +25,7 @@ function JobsDocumentGalleryExternal({ id: value.id, type: value.type, tags: [{ value: value.type, title: value.type }], + size: value.size, }); } diff --git a/client/src/pages/manage/manage.page.component.jsx b/client/src/pages/manage/manage.page.component.jsx index 82017ffae..97f8cb71c 100644 --- a/client/src/pages/manage/manage.page.component.jsx +++ b/client/src/pages/manage/manage.page.component.jsx @@ -24,6 +24,8 @@ import { selectBodyshop, selectInstanceConflict, } from "../../redux/user/user.selectors"; +import * as Sentry from "@sentry/react"; + import "./manage.page.styles.scss"; const ManageRootPage = lazy(() => @@ -407,7 +409,10 @@ export function Manage({ match, conflict, bodyshop }) { - {PageContent} + } showDialog> + {PageContent} + +