import * as express from 'express'
import { UserVideoRateUpdate } from '../../../../shared'
-import { retryTransactionWrapper } from '../../../helpers/database-utils'
import { logger } from '../../../helpers/logger'
import { sequelizeTypescript, VIDEO_RATE_TYPES } from '../../../initializers'
-import { sendVideoRateChangeToFollowers, sendVideoRateChangeToOrigin } from '../../../lib/activitypub'
-import { asyncMiddleware, authenticate, videoRateValidator } from '../../../middlewares'
+import { sendVideoRateChange } from '../../../lib/activitypub'
+import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, videoRateValidator } from '../../../middlewares'
import { AccountModel } from '../../../models/account/account'
import { AccountVideoRateModel } from '../../../models/account/account-video-rate'
import { VideoModel } from '../../../models/video/video'
rateVideoRouter.put('/:id/rate',
authenticate,
asyncMiddleware(videoRateValidator),
- asyncMiddleware(rateVideoRetryWrapper)
+ asyncRetryTransactionMiddleware(rateVideo)
)
// ---------------------------------------------------------------------------
// ---------------------------------------------------------------------------
-async function rateVideoRetryWrapper (req: express.Request, res: express.Response, next: express.NextFunction) {
- const options = {
- arguments: [ req, res ],
- errorMessage: 'Cannot update the user video rate.'
- }
-
- await retryTransactionWrapper(rateVideo, options)
-
- return res.type('json').status(204).end()
-}
-
async function rateVideo (req: express.Request, res: express.Response) {
const body: UserVideoRateUpdate = req.body
const rateType = body.rating
dislikes: dislikesToIncrement
}
- // Even if we do not own the video we increment the attributes
- // It is useful for the user to have a feedback
await videoInstance.increment(incrementQuery, sequelizeOptions)
- if (videoInstance.isOwned()) {
- await sendVideoRateChangeToFollowers(accountInstance, videoInstance, likesToIncrement, dislikesToIncrement, t)
- } else {
- await sendVideoRateChangeToOrigin(accountInstance, videoInstance, likesToIncrement, dislikesToIncrement, t)
- }
+ await sendVideoRateChange(accountInstance, videoInstance, likesToIncrement, dislikesToIncrement, t)
})
logger.info('Account video rate for video %s of account %s updated.', videoInstance.name, accountInstance.name)
+
+ return res.type('json').status(204).end()
}