From 1ebddadd0704812a4600c39cabe2268321e88331 Mon Sep 17 00:00:00 2001 From: Rigel Kent Date: Mon, 22 Jun 2020 13:00:39 +0200 Subject: predefined report reasons & improved reporter UI (#2842) - added `startAt` and `endAt` optional timestamps to help pin down reported sections of a video - added predefined report reasons - added video player with report modal --- server/helpers/custom-validators/video-abuses.ts | 29 ++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) (limited to 'server/helpers/custom-validators') diff --git a/server/helpers/custom-validators/video-abuses.ts b/server/helpers/custom-validators/video-abuses.ts index 05e11b1c6..0c2c34268 100644 --- a/server/helpers/custom-validators/video-abuses.ts +++ b/server/helpers/custom-validators/video-abuses.ts @@ -1,8 +1,9 @@ import validator from 'validator' import { CONSTRAINTS_FIELDS, VIDEO_ABUSE_STATES } from '../../initializers/constants' -import { exists } from './misc' +import { exists, isArray } from './misc' import { VideoAbuseVideoIs } from '@shared/models/videos/abuse/video-abuse-video-is.type' +import { VideoAbusePredefinedReasonsString, videoAbusePredefinedReasonsMap } from '@shared/models/videos/abuse/video-abuse-reason.model' const VIDEO_ABUSES_CONSTRAINTS_FIELDS = CONSTRAINTS_FIELDS.VIDEO_ABUSES @@ -10,6 +11,22 @@ function isVideoAbuseReasonValid (value: string) { return exists(value) && validator.isLength(value, VIDEO_ABUSES_CONSTRAINTS_FIELDS.REASON) } +function isVideoAbusePredefinedReasonValid (value: VideoAbusePredefinedReasonsString) { + return exists(value) && value in videoAbusePredefinedReasonsMap +} + +function isVideoAbusePredefinedReasonsValid (value: VideoAbusePredefinedReasonsString[]) { + return exists(value) && isArray(value) && value.every(v => v in videoAbusePredefinedReasonsMap) +} + +function isVideoAbuseTimestampValid (value: number) { + return value === null || (exists(value) && validator.isInt('' + value, { min: 0 })) +} + +function isVideoAbuseTimestampCoherent (endAt: number, { req }) { + return exists(req.body.startAt) && endAt > req.body.startAt +} + function isVideoAbuseModerationCommentValid (value: string) { return exists(value) && validator.isLength(value, VIDEO_ABUSES_CONSTRAINTS_FIELDS.MODERATION_COMMENT) } @@ -28,8 +45,12 @@ function isAbuseVideoIsValid (value: VideoAbuseVideoIs) { // --------------------------------------------------------------------------- export { - isVideoAbuseStateValid, isVideoAbuseReasonValid, - isAbuseVideoIsValid, - isVideoAbuseModerationCommentValid + isVideoAbusePredefinedReasonValid, + isVideoAbusePredefinedReasonsValid, + isVideoAbuseTimestampValid, + isVideoAbuseTimestampCoherent, + isVideoAbuseModerationCommentValid, + isVideoAbuseStateValid, + isAbuseVideoIsValid } -- cgit v1.2.3