X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fvideos.ts;h=acee4fe16e38fd1c0f236154b5529a47f42ca948;hb=98ec8b8e73a918d5680e6f13aaef56ca8756c2a8;hp=9442448932c27e3071de9edf7db2d79a4dcb5889;hpb=892211e8493b1f992fce7616cb1e48b7ff87a1dc;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 944244893..acee4fe16 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts @@ -1,9 +1,20 @@ import { join } from 'path' import * as request from 'request' +import { Transaction } from 'sequelize' import { ActivityIconObject } from '../../../shared/index' import { doRequest, doRequestAndSaveToFile } from '../../helpers/requests' import { CONFIG, REMOTE_SCHEME, STATIC_PATHS } from '../../initializers/constants' +import { AccountInstance } from '../../models/account/account-interface' import { VideoInstance } from '../../models/video/video-interface' +import { sendLikeToOrigin } from './index' +import { sendCreateDislikeToOrigin, sendCreateDislikeToVideoFollowers } from './send/send-create' +import { sendLikeToVideoFollowers } from './send/send-like' +import { + sendUndoDislikeToOrigin, + sendUndoDislikeToVideoFollowers, + sendUndoLikeToOrigin, + sendUndoLikeToVideoFollowers +} from './send/send-undo' function fetchRemoteVideoPreview (video: VideoInstance) { // FIXME: use url @@ -37,8 +48,42 @@ 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[] = [] + + // Undo Like + if (likes < 0) tasks.push(sendUndoLikeToVideoFollowers(account, video, t)) + // Like + if (likes > 0) tasks.push(sendLikeToVideoFollowers(account, video, t)) + + // Undo Dislike + if (dislikes < 0) tasks.push(sendUndoDislikeToVideoFollowers(account, video, t)) + // Dislike + if (dislikes > 0) tasks.push(sendCreateDislikeToVideoFollowers(account, video, t)) + + return Promise.all(tasks) +} + +function sendVideoRateChangeToOrigin (account: AccountInstance, video: VideoInstance, likes: number, dislikes: number, t: Transaction) { + const tasks: Promise[] = [] + + // Undo Like + if (likes < 0) tasks.push(sendUndoLikeToOrigin(account, video, t)) + // Like + if (likes > 0) tasks.push(sendLikeToOrigin(account, video, t)) + + // Undo Dislike + if (dislikes < 0) tasks.push(sendUndoDislikeToOrigin(account, video, t)) + // Dislike + if (dislikes > 0) tasks.push(sendCreateDislikeToOrigin(account, video, t)) + + return Promise.all(tasks) +} + export { fetchRemoteVideoPreview, fetchRemoteVideoDescription, - generateThumbnailFromUrl + generateThumbnailFromUrl, + sendVideoRateChangeToFollowers, + sendVideoRateChangeToOrigin }