X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fvideo-comment.ts;h=6eb865f7f97793c88540c841901a28e88aed128a;hb=d4fff51d96925b5704c97dd673dd779030b1aced;hp=c76570a5df3c0b9697f53f40b59fe145f5f12a46;hpb=cf21b2cbef61929177b9c09b5e017c3b7eb8535d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/video-comment.ts b/server/lib/video-comment.ts index c76570a5d..6eb865f7f 100644 --- a/server/lib/video-comment.ts +++ b/server/lib/video-comment.ts @@ -1,3 +1,4 @@ +import express from 'express' import { cloneDeep } from 'lodash' import * as Sequelize from 'sequelize' import { logger } from '@server/helpers/logger' @@ -5,27 +6,38 @@ import { sequelizeTypescript } from '@server/initializers/database' import { ResultList } from '../../shared/models' import { VideoCommentThreadTree } from '../../shared/models/videos/comment/video-comment.model' import { VideoCommentModel } from '../models/video/video-comment' -import { MAccountDefault, MComment, MCommentOwnerVideo, MCommentOwnerVideoReply, MVideoFullLight } from '../types/models' +import { + MAccountDefault, + MComment, + MCommentFormattable, + MCommentOwnerVideo, + MCommentOwnerVideoReply, + MVideoFullLight +} from '../types/models' import { sendCreateVideoComment, sendDeleteVideoComment } from './activitypub/send' import { getLocalVideoCommentActivityPubUrl } from './activitypub/url' import { Hooks } from './plugins/hooks' -async function removeComment (videoCommentInstance: MCommentOwnerVideo) { - const videoCommentInstanceBefore = cloneDeep(videoCommentInstance) +async function removeComment (commentArg: MComment, req: express.Request, res: express.Response) { + let videoCommentInstanceBefore: MCommentOwnerVideo await sequelizeTypescript.transaction(async t => { - if (videoCommentInstance.isOwned() || videoCommentInstance.Video.isOwned()) { - await sendDeleteVideoComment(videoCommentInstance, t) + const comment = await VideoCommentModel.loadByUrlAndPopulateAccountAndVideo(commentArg.url, t) + + videoCommentInstanceBefore = cloneDeep(comment) + + if (comment.isOwned() || comment.Video.isOwned()) { + await sendDeleteVideoComment(comment, t) } - videoCommentInstance.markAsDeleted() + comment.markAsDeleted() - await videoCommentInstance.save({ transaction: t }) - }) + await comment.save({ transaction: t }) - logger.info('Video comment %d deleted.', videoCommentInstance.id) + logger.info('Video comment %d deleted.', comment.id) + }) - Hooks.runAction('action:api.video-comment.deleted', { comment: videoCommentInstanceBefore }) + Hooks.runAction('action:api.video-comment.deleted', { comment: videoCommentInstanceBefore, req, res }) } async function createVideoComment (obj: { @@ -63,7 +75,7 @@ async function createVideoComment (obj: { return savedComment } -function buildFormattedCommentTree (resultList: ResultList): VideoCommentThreadTree { +function buildFormattedCommentTree (resultList: ResultList): VideoCommentThreadTree { // Comments are sorted by id ASC const comments = resultList.data