diff --git a/server/lib/activitypub/process/process-create.ts b/server/lib/activitypub/process/process-create.ts index c88082bbf..4740dc432 100644 --- a/server/lib/activitypub/process/process-create.ts +++ b/server/lib/activitypub/process/process-create.ts @@ -63,7 +63,7 @@ function createVideoDislike (byAccount: AccountInstance, activity: ActivityCreat defaults: rate, transaction: t }) - await video.increment('dislikes', { transaction: t }) + if (created === true) await video.increment('dislikes', { transaction: t }) if (video.isOwned() && created === true) { // Don't resend the activity to the sender diff --git a/server/lib/activitypub/process/process-like.ts b/server/lib/activitypub/process/process-like.ts index 0347f95be..5f2ffe7ea 100644 --- a/server/lib/activitypub/process/process-like.ts +++ b/server/lib/activitypub/process/process-like.ts @@ -46,7 +46,7 @@ function createVideoLike (byAccount: AccountInstance, activity: ActivityLike) { defaults: rate, transaction: t }) - await video.increment('likes', { transaction: t }) + if (created === true) await video.increment('likes', { transaction: t }) if (video.isOwned() && created === true) { // Don't resend the activity to the sender diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index acee4fe16..6b82f12d5 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -48,36 +48,44 @@ function generateThumbnailFromUrl (video: VideoInstance, icon: ActivityIconObjec return doRequestAndSaveToFile(options, thumbnailPath) } -function sendVideoRateChangeToFollowers (account: AccountInstance, video: VideoInstance, likes: number, dislikes: number, t: Transaction) { - const tasks: Promise[] = [] +async function sendVideoRateChangeToFollowers ( + account: AccountInstance, + video: VideoInstance, + likes: number, + dislikes: number, + t: Transaction +) { + // Keep the order: first we undo and then we create // Undo Like - if (likes < 0) tasks.push(sendUndoLikeToVideoFollowers(account, video, t)) - // Like - if (likes > 0) tasks.push(sendLikeToVideoFollowers(account, video, t)) - + if (likes < 0) await sendUndoLikeToVideoFollowers(account, video, t) // Undo Dislike - if (dislikes < 0) tasks.push(sendUndoDislikeToVideoFollowers(account, video, t)) - // Dislike - if (dislikes > 0) tasks.push(sendCreateDislikeToVideoFollowers(account, video, t)) + if (dislikes < 0) await sendUndoDislikeToVideoFollowers(account, video, t) - return Promise.all(tasks) + // Like + if (likes > 0) await sendLikeToVideoFollowers(account, video, t) + // Dislike + if (dislikes > 0) await sendCreateDislikeToVideoFollowers(account, video, t) } -function sendVideoRateChangeToOrigin (account: AccountInstance, video: VideoInstance, likes: number, dislikes: number, t: Transaction) { - const tasks: Promise[] = [] +async function sendVideoRateChangeToOrigin ( + account: AccountInstance, + video: VideoInstance, + likes: number, + dislikes: number, + t: Transaction +) { + // Keep the order: first we undo and then we create // Undo Like - if (likes < 0) tasks.push(sendUndoLikeToOrigin(account, video, t)) - // Like - if (likes > 0) tasks.push(sendLikeToOrigin(account, video, t)) - + if (likes < 0) await sendUndoLikeToOrigin(account, video, t) // Undo Dislike - if (dislikes < 0) tasks.push(sendUndoDislikeToOrigin(account, video, t)) - // Dislike - if (dislikes > 0) tasks.push(sendCreateDislikeToOrigin(account, video, t)) + if (dislikes < 0) await sendUndoDislikeToOrigin(account, video, t) - return Promise.all(tasks) + // Like + if (likes > 0) await sendLikeToOrigin(account, video, t) + // Dislike + if (dislikes > 0) await sendCreateDislikeToOrigin(account, video, t) } export {