X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fvideos%2Frate.ts;h=6b26a8eee68b662f7a21d331cbcd59e2a66343a9;hb=d17c7b4e8c52317bdc874917387b7a49f6cf8b01;hp=53952a0a24e16f56cb9f9eb49b1061f1d1b453bf;hpb=5c6d985faeef1d6793d3f44ca6374f1a9b722806;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/videos/rate.ts b/server/controllers/api/videos/rate.ts index 53952a0a2..6b26a8eee 100644 --- a/server/controllers/api/videos/rate.ts +++ b/server/controllers/api/videos/rate.ts @@ -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 { sequelizeTypescript, VIDEO_RATE_TYPES } from '../../../initializers' -import { getRateUrl, sendVideoRateChange } from '../../../lib/activitypub' +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 { VideoModel } from '../../../models/video/video' const rateVideoRouter = express.Router() @@ -27,8 +27,8 @@ export { async function rateVideo (req: express.Request, res: express.Response) { const body: UserVideoRateUpdate = req.body const rateType = body.rating - const videoInstance: VideoModel = res.locals.video - const userAccount: AccountModel = res.locals.oauth.token.User.Account + const videoInstance = res.locals.videoAll + const userAccount = res.locals.oauth.token.User.Account await sequelizeTypescript.transaction(async t => { const sequelizeOptions = { transaction: t } @@ -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 @@ -52,7 +55,7 @@ async function rateVideo (req: express.Request, res: express.Response) { await previousRate.destroy(sequelizeOptions) } else { // Update previous rate previousRate.type = rateType - previousRate.url = getRateUrl(rateType, userAccount.Actor, videoInstance) + previousRate.url = getLocalRateUrl(rateType, userAccount.Actor, videoInstance) await previousRate.save(sequelizeOptions) } } else if (rateType !== 'none') { // There was not a previous rate, insert a new one if there is a rate @@ -60,7 +63,7 @@ async function rateVideo (req: express.Request, res: express.Response) { accountId: accountInstance.id, videoId: videoInstance.id, type: rateType, - url: getRateUrl(rateType, userAccount.Actor, videoInstance) + url: getLocalRateUrl(rateType, userAccount.Actor, videoInstance) } await AccountVideoRateModel.create(query, sequelizeOptions) @@ -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() }