-import { AbuseMessageModel } from '@server/models/abuse/abuse-message'
+import { AccountModel } from '@server/models/account/account'
import { getServerActor } from '@server/models/application/application'
import { ServerBlocklistModel } from '@server/models/server/server-blocklist'
import {
})
}
- notifyOnAbuseMessage (abuse: MAbuseFull, message: AbuseMessageModel): void {
+ notifyOnAbuseMessage (abuse: MAbuseFull, message: MAbuseMessage): void {
this.notifyOfNewAbuseMessage(abuse, message)
.catch(err => {
logger.error('Cannot notify on new abuse %d message.', abuse.id, { err })
const url = this.getAbuseUrl(abuse)
logger.info('Notifying reporter and moderators of new abuse message on %s.', url)
+ const accountMessage = await AccountModel.load(message.accountId)
+
function settingGetter (user: MUserWithNotificationSetting) {
return user.NotificationSetting.abuseNewMessage
}
}
function emailSenderReporter (emails: string[]) {
- return Emailer.Instance.addAbuseNewMessageNotification(emails, { target: 'reporter', abuse, message })
+ return Emailer.Instance.addAbuseNewMessageNotification(emails, { target: 'reporter', abuse, message, accountMessage })
}
function emailSenderModerators (emails: string[]) {
- return Emailer.Instance.addAbuseNewMessageNotification(emails, { target: 'moderator', abuse, message })
+ return Emailer.Instance.addAbuseNewMessageNotification(emails, { target: 'moderator', abuse, message, accountMessage })
}
async function buildReporterOptions () {
// Only notify our users
- if (abuse.ReporterAccount.isOwned() !== true) return
+ if (abuse.ReporterAccount.isOwned() !== true) return undefined
const reporter = await UserModel.loadByAccountActorId(abuse.ReporterAccount.actorId)
// Don't notify my own message
- if (reporter.Account.id === message.accountId) return
+ if (reporter.Account.id === message.accountId) return undefined
return { users: [ reporter ], settingGetter, notificationCreator, emailSender: emailSenderReporter }
}
// Don't notify my own message
moderators = moderators.filter(m => m.Account.id !== message.accountId)
- if (moderators.length === 0) return
+ if (moderators.length === 0) return undefined
return { users: moderators, settingGetter, notificationCreator, emailSender: emailSenderModerators }
}
- const [ reporterOptions, moderatorsOptions ] = await Promise.all([
+ const options = await Promise.all([
buildReporterOptions(),
buildModeratorsOptions()
])
- return Promise.all([
- this.notify(reporterOptions),
- this.notify(moderatorsOptions)
- ])
+ return Promise.all(
+ options
+ .filter(opt => !!opt)
+ .map(opt => this.notify(opt))
+ )
}
private async notifyModeratorsOfVideoAutoBlacklist (videoBlacklist: MVideoBlacklistLightVideo) {