X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fshare.ts;h=53ecd3dab7a857b40c95dd28c5b663b00fd1ac84;hb=e3a682a877a10833cb54ac3595e55110bda95647;hp=689e200a6c4cce00074b2db63e72e7d1a8169a8c;hpb=892211e8493b1f992fce7616cb1e48b7ff87a1dc;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/share.ts b/server/lib/activitypub/share.ts index 689e200a6..53ecd3dab 100644 --- a/server/lib/activitypub/share.ts +++ b/server/lib/activitypub/share.ts @@ -1,33 +1,41 @@ import { Transaction } from 'sequelize' -import { getServerAccount } from '../../helpers/utils' -import { database as db } from '../../initializers' -import { VideoChannelInstance } from '../../models/index' -import { VideoInstance } from '../../models/video/video-interface' -import { sendVideoAnnounce, sendVideoChannelAnnounce } from './send/send-announce' +import { VideoPrivacy } from '../../../shared/models/videos' +import { getServerActor } from '../../helpers/utils' +import { VideoModel } from '../../models/video/video' +import { VideoShareModel } from '../../models/video/video-share' +import { sendVideoAnnounceToFollowers } from './send' +import { getAnnounceActivityPubUrl } from './url' -async function shareVideoChannelByServer (videoChannel: VideoChannelInstance, t: Transaction) { - const serverAccount = await getServerAccount() +async function shareVideoByServerAndChannel (video: VideoModel, t: Transaction) { + if (video.privacy === VideoPrivacy.PRIVATE) return undefined - await db.VideoChannelShare.create({ - accountId: serverAccount.id, - videoChannelId: videoChannel.id - }, { transaction: t }) - - return sendVideoChannelAnnounce(serverAccount, videoChannel, t) -} + const serverActor = await getServerActor() -async function shareVideoByServer (video: VideoInstance, t: Transaction) { - const serverAccount = await getServerAccount() + const serverShareUrl = getAnnounceActivityPubUrl(video.url, serverActor) + const serverSharePromise = VideoShareModel.create({ + actorId: serverActor.id, + videoId: video.id, + url: serverShareUrl + }, { transaction: t }) - await db.VideoShare.create({ - accountId: serverAccount.id, - videoId: video.id + const videoChannelShareUrl = getAnnounceActivityPubUrl(video.url, video.VideoChannel.Actor) + const videoChannelSharePromise = VideoShareModel.create({ + actorId: video.VideoChannel.actorId, + videoId: video.id, + url: videoChannelShareUrl }, { transaction: t }) - return sendVideoAnnounce(serverAccount, video, t) + const [ serverShare, videoChannelShare ] = await Promise.all([ + serverSharePromise, + videoChannelSharePromise + ]) + + return Promise.all([ + sendVideoAnnounceToFollowers(serverActor, videoChannelShare, video, t), + sendVideoAnnounceToFollowers(serverActor, serverShare, video, t) + ]) } export { - shareVideoChannelByServer, - shareVideoByServer + shareVideoByServerAndChannel }