fix: wrong validation for expiration in reverse share modal

This commit is contained in:
Elias Schneider
2025-01-04 01:27:59 +01:00
parent 4a7076a094
commit b3ea96c191
2 changed files with 16 additions and 9 deletions

View File

@@ -26,10 +26,11 @@ export class ReverseShareService {
.toDate(); .toDate();
const parsedExpiration = parseRelativeDateToAbsolute(data.shareExpiration); const parsedExpiration = parseRelativeDateToAbsolute(data.shareExpiration);
const maxExpiration = this.config.get("share.maxExpiration");
if ( if (
this.config.get("share.maxExpiration") !== 0 && maxExpiration.value !== 0 &&
parsedExpiration > parsedExpiration >
moment().add(this.config.get("share.maxExpiration"), "hours").toDate() moment().add(maxExpiration.value, maxExpiration.unit).toDate()
) { ) {
throw new BadRequestException( throw new BadRequestException(
"Expiration date exceeds maximum expiration date", "Expiration date exceeds maximum expiration date",

View File

@@ -20,6 +20,7 @@ import useTranslate, {
translateOutsideContext, translateOutsideContext,
} from "../../../hooks/useTranslate.hook"; } from "../../../hooks/useTranslate.hook";
import shareService from "../../../services/share.service"; import shareService from "../../../services/share.service";
import { Timespan } from "../../../types/timespan.type";
import { getExpirationPreview } from "../../../utils/date.util"; import { getExpirationPreview } from "../../../utils/date.util";
import toast from "../../../utils/toast.util"; import toast from "../../../utils/toast.util";
import FileSizeInput from "../../core/FileSizeInput"; import FileSizeInput from "../../core/FileSizeInput";
@@ -28,7 +29,7 @@ import showCompletedReverseShareModal from "./showCompletedReverseShareModal";
const showCreateReverseShareModal = ( const showCreateReverseShareModal = (
modals: ModalsContextProps, modals: ModalsContextProps,
showSendEmailNotificationOption: boolean, showSendEmailNotificationOption: boolean,
maxExpirationInHours: number, maxExpiration: Timespan,
getReverseShares: () => void, getReverseShares: () => void,
) => { ) => {
const t = translateOutsideContext(); const t = translateOutsideContext();
@@ -38,7 +39,7 @@ const showCreateReverseShareModal = (
<Body <Body
showSendEmailNotificationOption={showSendEmailNotificationOption} showSendEmailNotificationOption={showSendEmailNotificationOption}
getReverseShares={getReverseShares} getReverseShares={getReverseShares}
maxExpirationInHours={maxExpirationInHours} maxExpiration={maxExpiration}
/> />
), ),
}); });
@@ -47,12 +48,13 @@ const showCreateReverseShareModal = (
const Body = ({ const Body = ({
getReverseShares, getReverseShares,
showSendEmailNotificationOption, showSendEmailNotificationOption,
maxExpirationInHours, maxExpiration,
}: { }: {
getReverseShares: () => void; getReverseShares: () => void;
showSendEmailNotificationOption: boolean; showSendEmailNotificationOption: boolean;
maxExpirationInHours: number; maxExpiration: Timespan;
}) => { }) => {
console.log(maxExpiration);
const modals = useModals(); const modals = useModals();
const t = useTranslate(); const t = useTranslate();
@@ -91,13 +93,17 @@ const Body = ({
) as moment.unitOfTime.DurationConstructor, ) as moment.unitOfTime.DurationConstructor,
); );
if ( if (
maxExpirationInHours != 0 && maxExpiration.value != 0 &&
expirationDate.isAfter(moment().add(maxExpirationInHours, "hours")) expirationDate.isAfter(
moment().add(maxExpiration.value, maxExpiration.unit),
)
) { ) {
form.setFieldError( form.setFieldError(
"expiration_num", "expiration_num",
t("upload.modal.expires.error.too-long", { t("upload.modal.expires.error.too-long", {
max: moment.duration(maxExpirationInHours, "hours").humanize(), max: moment
.duration(maxExpiration.value, maxExpiration.unit)
.humanize(),
}), }),
); );
return; return;