From b3ea96c1916980863fc6903c64cd2a7b32d66cfb Mon Sep 17 00:00:00 2001 From: Elias Schneider Date: Sat, 4 Jan 2025 01:27:59 +0100 Subject: [PATCH] fix: wrong validation for expiration in reverse share modal --- .../src/reverseShare/reverseShare.service.ts | 5 +++-- .../modals/showCreateReverseShareModal.tsx | 20 ++++++++++++------- 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/backend/src/reverseShare/reverseShare.service.ts b/backend/src/reverseShare/reverseShare.service.ts index 1470035..74ad3a6 100644 --- a/backend/src/reverseShare/reverseShare.service.ts +++ b/backend/src/reverseShare/reverseShare.service.ts @@ -26,10 +26,11 @@ export class ReverseShareService { .toDate(); const parsedExpiration = parseRelativeDateToAbsolute(data.shareExpiration); + const maxExpiration = this.config.get("share.maxExpiration"); if ( - this.config.get("share.maxExpiration") !== 0 && + maxExpiration.value !== 0 && parsedExpiration > - moment().add(this.config.get("share.maxExpiration"), "hours").toDate() + moment().add(maxExpiration.value, maxExpiration.unit).toDate() ) { throw new BadRequestException( "Expiration date exceeds maximum expiration date", diff --git a/frontend/src/components/share/modals/showCreateReverseShareModal.tsx b/frontend/src/components/share/modals/showCreateReverseShareModal.tsx index cdee295..d0bc310 100644 --- a/frontend/src/components/share/modals/showCreateReverseShareModal.tsx +++ b/frontend/src/components/share/modals/showCreateReverseShareModal.tsx @@ -20,6 +20,7 @@ import useTranslate, { translateOutsideContext, } from "../../../hooks/useTranslate.hook"; import shareService from "../../../services/share.service"; +import { Timespan } from "../../../types/timespan.type"; import { getExpirationPreview } from "../../../utils/date.util"; import toast from "../../../utils/toast.util"; import FileSizeInput from "../../core/FileSizeInput"; @@ -28,7 +29,7 @@ import showCompletedReverseShareModal from "./showCompletedReverseShareModal"; const showCreateReverseShareModal = ( modals: ModalsContextProps, showSendEmailNotificationOption: boolean, - maxExpirationInHours: number, + maxExpiration: Timespan, getReverseShares: () => void, ) => { const t = translateOutsideContext(); @@ -38,7 +39,7 @@ const showCreateReverseShareModal = ( ), }); @@ -47,12 +48,13 @@ const showCreateReverseShareModal = ( const Body = ({ getReverseShares, showSendEmailNotificationOption, - maxExpirationInHours, + maxExpiration, }: { getReverseShares: () => void; showSendEmailNotificationOption: boolean; - maxExpirationInHours: number; + maxExpiration: Timespan; }) => { + console.log(maxExpiration); const modals = useModals(); const t = useTranslate(); @@ -91,13 +93,17 @@ const Body = ({ ) as moment.unitOfTime.DurationConstructor, ); if ( - maxExpirationInHours != 0 && - expirationDate.isAfter(moment().add(maxExpirationInHours, "hours")) + maxExpiration.value != 0 && + expirationDate.isAfter( + moment().add(maxExpiration.value, maxExpiration.unit), + ) ) { form.setFieldError( "expiration_num", t("upload.modal.expires.error.too-long", { - max: moment.duration(maxExpirationInHours, "hours").humanize(), + max: moment + .duration(maxExpiration.value, maxExpiration.unit) + .humanize(), }), ); return;