import * as Bluebird from 'bluebird'
import { invert } from 'lodash'
-import { literal, Op, QueryTypes, WhereOptions } from 'sequelize'
+import { literal, Op, QueryTypes } from 'sequelize'
import {
AllowNull,
BelongsTo,
UpdatedAt
} from 'sequelize-typescript'
import { isAbuseModerationCommentValid, isAbuseReasonValid, isAbuseStateValid } from '@server/helpers/custom-validators/abuses'
+import { abusePredefinedReasonsMap } from '@shared/core-utils/abuse'
import {
AbuseFilter,
AbuseObject,
AbusePredefinedReasons,
- abusePredefinedReasonsMap,
AbusePredefinedReasonsString,
AbuseState,
AbuseVideoIs,
})
VideoAbuse: VideoAbuseModel
- // FIXME: deprecated in 2.3. Remove these validators
- static loadByIdAndVideoId (id: number, videoId?: number, uuid?: string): Bluebird<MAbuseReporter> {
- const videoWhere: WhereOptions = {}
-
- if (videoId) videoWhere.videoId = videoId
- if (uuid) videoWhere.deletedVideo = { uuid }
-
- const query = {
- include: [
- {
- model: VideoAbuseModel,
- required: true,
- where: videoWhere
- },
- {
- model: AccountModel,
- as: 'ReporterAccount'
- }
- ],
- where: {
- id
- }
- }
- return AbuseModel.findOne(query)
- }
-
static loadByIdWithReporter (id: number): Bluebird<MAbuseReporter> {
const query = {
where: {
: null,
countReportsForReporter: (countReportsForReporter || 0),
- countReportsForReportee: (countReportsForReportee || 0),
-
- // FIXME: deprecated in 2.3, remove this
- startAt: null,
- endAt: null,
- count: countReportsForVideo || 0,
- nth: nthReportForVideo || 0
+ countReportsForReportee: (countReportsForReportee || 0)
})
}
}
private static getPredefinedReasonsStrings (predefinedReasons: AbusePredefinedReasons[]): AbusePredefinedReasonsString[] {
+ const invertedPredefinedReasons = invert(abusePredefinedReasonsMap)
+
return (predefinedReasons || [])
- .filter(r => r in AbusePredefinedReasons)
- .map(r => invert(abusePredefinedReasonsMap)[r] as AbusePredefinedReasonsString)
+ .map(r => invertedPredefinedReasons[r] as AbusePredefinedReasonsString)
+ .filter(v => !!v)
}
}