diff options
author | Julien Maulny <julien.maulny@protonmail.com> | 2019-11-15 19:05:08 +0100 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2019-12-04 09:36:45 +0100 |
commit | 69222afac8f8c41d90295b33f0695bbff352851e (patch) | |
tree | 63fe1faea94dd3bfc54e633631eecb275c969e54 /server/controllers/api/videos/comment.ts | |
parent | 69c7f7525ddf13b7ced787d8b72ac74b43665517 (diff) | |
download | PeerTube-69222afac8f8c41d90295b33f0695bbff352851e.tar.gz PeerTube-69222afac8f8c41d90295b33f0695bbff352851e.tar.zst PeerTube-69222afac8f8c41d90295b33f0695bbff352851e.zip |
Soft delete video comments instead of detroy
Diffstat (limited to 'server/controllers/api/videos/comment.ts')
-rw-r--r-- | server/controllers/api/videos/comment.ts | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/server/controllers/api/videos/comment.ts b/server/controllers/api/videos/comment.ts index b2b06b170..5f3fed5c0 100644 --- a/server/controllers/api/videos/comment.ts +++ b/server/controllers/api/videos/comment.ts | |||
@@ -1,10 +1,11 @@ | |||
1 | import * as express from 'express' | 1 | import * as express from 'express' |
2 | import { cloneDeep } from 'lodash' | ||
2 | import { ResultList } from '../../../../shared/models' | 3 | import { ResultList } from '../../../../shared/models' |
3 | import { VideoCommentCreate } from '../../../../shared/models/videos/video-comment.model' | 4 | import { VideoCommentCreate } from '../../../../shared/models/videos/video-comment.model' |
4 | import { logger } from '../../../helpers/logger' | 5 | import { logger } from '../../../helpers/logger' |
5 | import { getFormattedObjects } from '../../../helpers/utils' | 6 | import { getFormattedObjects } from '../../../helpers/utils' |
6 | import { sequelizeTypescript } from '../../../initializers' | 7 | import { sequelizeTypescript } from '../../../initializers' |
7 | import { buildFormattedCommentTree, createVideoComment } from '../../../lib/video-comment' | 8 | import { buildFormattedCommentTree, createVideoComment, markCommentAsDeleted } from '../../../lib/video-comment' |
8 | import { | 9 | import { |
9 | asyncMiddleware, | 10 | asyncMiddleware, |
10 | asyncRetryTransactionMiddleware, | 11 | asyncRetryTransactionMiddleware, |
@@ -177,19 +178,22 @@ async function addVideoCommentReply (req: express.Request, res: express.Response | |||
177 | 178 | ||
178 | async function removeVideoComment (req: express.Request, res: express.Response) { | 179 | async function removeVideoComment (req: express.Request, res: express.Response) { |
179 | const videoCommentInstance = res.locals.videoCommentFull | 180 | const videoCommentInstance = res.locals.videoCommentFull |
181 | const videoCommentInstanceBefore = cloneDeep(videoCommentInstance) | ||
180 | 182 | ||
181 | await sequelizeTypescript.transaction(async t => { | 183 | await sequelizeTypescript.transaction(async t => { |
182 | await videoCommentInstance.destroy({ transaction: t }) | ||
183 | |||
184 | if (videoCommentInstance.isOwned() || videoCommentInstance.Video.isOwned()) { | 184 | if (videoCommentInstance.isOwned() || videoCommentInstance.Video.isOwned()) { |
185 | await sendDeleteVideoComment(videoCommentInstance, t) | 185 | await sendDeleteVideoComment(videoCommentInstance, t) |
186 | } | 186 | } |
187 | |||
188 | markCommentAsDeleted(videoCommentInstance) | ||
189 | |||
190 | await videoCommentInstance.save() | ||
187 | }) | 191 | }) |
188 | 192 | ||
189 | auditLogger.delete(getAuditIdFromRes(res), new CommentAuditView(videoCommentInstance.toFormattedJSON())) | 193 | auditLogger.delete(getAuditIdFromRes(res), new CommentAuditView(videoCommentInstance.toFormattedJSON())) |
190 | logger.info('Video comment %d deleted.', videoCommentInstance.id) | 194 | logger.info('Video comment %d deleted.', videoCommentInstance.id) |
191 | 195 | ||
192 | Hooks.runAction('action:api.video-comment.deleted', { comment: videoCommentInstance }) | 196 | Hooks.runAction('action:api.video-comment.deleted', { comment: videoCommentInstanceBefore }) |
193 | 197 | ||
194 | return res.type('json').status(204).end() | 198 | return res.type('json').status(204).end() |
195 | } | 199 | } |