]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/controllers/api/videos/rate.ts
Prevent broken transcoding with audio only input
[github/Chocobozzz/PeerTube.git] / server / controllers / api / videos / rate.ts
index df1eddb4fdd1c43442144f5f1ff84faf6f0cadcf..6b26a8eee68b662f7a21d331cbcd59e2a66343a9 100644 (file)
@@ -1,12 +1,12 @@
-import * as express from 'express'
-import { UserVideoRateUpdate } from '../../../../shared'
+import express from 'express'
+import { HttpStatusCode, UserVideoRateUpdate } from '@shared/models'
 import { logger } from '../../../helpers/logger'
 import { VIDEO_RATE_TYPES } from '../../../initializers/constants'
+import { sequelizeTypescript } from '../../../initializers/database'
 import { getLocalRateUrl, sendVideoRateChange } from '../../../lib/activitypub/video-rates'
 import { asyncMiddleware, asyncRetryTransactionMiddleware, authenticate, videoUpdateRateValidator } from '../../../middlewares'
 import { AccountModel } from '../../../models/account/account'
 import { AccountVideoRateModel } from '../../../models/account/account-video-rate'
-import { sequelizeTypescript } from '../../../initializers/database'
 
 const rateVideoRouter = express.Router()
 
@@ -36,6 +36,9 @@ async function rateVideo (req: express.Request, res: express.Response) {
     const accountInstance = await AccountModel.load(userAccount.id, t)
     const previousRate = await AccountVideoRateModel.load(accountInstance.id, videoInstance.id, t)
 
+    // Same rate, nothing do to
+    if (rateType === 'none' && !previousRate || previousRate?.type === rateType) return
+
     let likesToIncrement = 0
     let dislikesToIncrement = 0
 
@@ -78,5 +81,7 @@ async function rateVideo (req: express.Request, res: express.Response) {
     logger.info('Account video rate for video %s of account %s updated.', videoInstance.name, accountInstance.name)
   })
 
-  return res.type('json').status(204).end()
+  return res.type('json')
+            .status(HttpStatusCode.NO_CONTENT_204)
+            .end()
 }