From: Chocobozzz Date: Thu, 1 Aug 2019 12:26:49 +0000 (+0200) Subject: Fix like/dislike federation X-Git-Tag: v1.4.0-rc.1~36 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=a21e25ff641854c8b01664cb18655aa420620af6;p=oweals%2Fpeertube.git Fix like/dislike federation --- diff --git a/server/lib/activitypub/process/process-dislike.ts b/server/lib/activitypub/process/process-dislike.ts index c46180617..f06269f8b 100644 --- a/server/lib/activitypub/process/process-dislike.ts +++ b/server/lib/activitypub/process/process-dislike.ts @@ -34,19 +34,20 @@ async function processDislike (activity: ActivityCreate | ActivityDislike, byAct const existingRate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byAccount.id, video.id, url) if (existingRate && existingRate.type === 'dislike') return - await AccountVideoRateModel.create({ - type: 'dislike' as 'dislike', - videoId: video.id, - accountId: byAccount.id, - url - }, { transaction: t }) - await video.increment('dislikes', { transaction: t }) if (existingRate && existingRate.type === 'like') { await video.decrement('likes', { transaction: t }) } + const rate = existingRate || new AccountVideoRateModel() + rate.type = 'dislike' + rate.videoId = video.id + rate.accountId = byAccount.id + rate.url = url + + await rate.save({ transaction: t }) + if (video.isOwned()) { // Don't resend the activity to the sender const exceptions = [ byActor ] diff --git a/server/lib/activitypub/process/process-like.ts b/server/lib/activitypub/process/process-like.ts index 5b2ab4b66..bba54a19b 100644 --- a/server/lib/activitypub/process/process-like.ts +++ b/server/lib/activitypub/process/process-like.ts @@ -34,19 +34,20 @@ async function processLikeVideo (byActor: ActorModel, activity: ActivityLike) { const existingRate = await AccountVideoRateModel.loadByAccountAndVideoOrUrl(byAccount.id, video.id, url) if (existingRate && existingRate.type === 'like') return - await AccountVideoRateModel.create({ - type: 'like' as 'like', - videoId: video.id, - accountId: byAccount.id, - url - }, { transaction: t }) - - await video.increment('likes', { transaction: t }) - if (existingRate && existingRate.type === 'dislike') { await video.decrement('dislikes', { transaction: t }) } + await video.increment('likes', { transaction: t }) + + const rate = existingRate || new AccountVideoRateModel() + rate.type = 'like' + rate.videoId = video.id + rate.accountId = byAccount.id + rate.url = url + + await rate.save({ transaction: t }) + if (video.isOwned()) { // Don't resend the activity to the sender const exceptions = [ byActor ]