X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Factivitypub%2Fshare.ts;h=1f8a8f3c48c872d0ac1568267e63d6883146defb;hb=92315d979c3f424d81f8fca3c8831d81e4e2a6d6;hp=3bece0ff72748f49d9889c82dfd803ced36d9da3;hpb=2ba92871319d7af63472c1380664a9f9eeb1c690;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/activitypub/share.ts b/server/lib/activitypub/share.ts index 3bece0ff7..1f8a8f3c4 100644 --- a/server/lib/activitypub/share.ts +++ b/server/lib/activitypub/share.ts @@ -1,20 +1,18 @@ import { Transaction } from 'sequelize' -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 { sendUndoAnnounce, sendVideoAnnounce } from './send' -import { getVideoAnnounceActivityPubUrl } from './url' -import { VideoChannelModel } from '../../models/video/video-channel' +import { getLocalVideoAnnounceActivityPubUrl } from './url' import * as Bluebird from 'bluebird' import { doRequest } from '../../helpers/requests' import { getOrCreateActorAndServerAndModel } from './actor' import { logger } from '../../helpers/logger' -import { CRAWL_REQUEST_CONCURRENCY } from '../../initializers' +import { CRAWL_REQUEST_CONCURRENCY } from '../../initializers/constants' import { checkUrlsSameHost, getAPId } from '../../helpers/activitypub' +import { MChannelActorLight, MVideo, MVideoAccountLight, MVideoId } from '../../types/models/video' +import { getServerActor } from '@server/models/application/application' -async function shareVideoByServerAndChannel (video: VideoModel, t: Transaction) { - if (video.privacy === VideoPrivacy.PRIVATE) return undefined +async function shareVideoByServerAndChannel (video: MVideoAccountLight, t: Transaction) { + if (!video.hasPrivacyForFederation()) return undefined return Promise.all([ shareByServer(video, t), @@ -22,7 +20,11 @@ async function shareVideoByServerAndChannel (video: VideoModel, t: Transaction) ]) } -async function changeVideoChannelShare (video: VideoModel, oldVideoChannel: VideoChannelModel, t: Transaction) { +async function changeVideoChannelShare ( + video: MVideoAccountLight, + oldVideoChannel: MChannelActorLight, + t: Transaction +) { logger.info('Updating video channel of video %s: %s -> %s.', video.uuid, oldVideoChannel.name, video.VideoChannel.name) await undoShareByVideoChannel(video, oldVideoChannel, t) @@ -30,11 +32,11 @@ async function changeVideoChannelShare (video: VideoModel, oldVideoChannel: Vide await shareByVideoChannel(video, t) } -async function addVideoShares (shareUrls: string[], instance: VideoModel) { +async function addVideoShares (shareUrls: string[], video: MVideoId) { await Bluebird.map(shareUrls, async shareUrl => { try { // Fetch url - const { body } = await doRequest({ + const { body } = await doRequest({ uri: shareUrl, json: true, activityPub: true @@ -50,7 +52,7 @@ async function addVideoShares (shareUrls: string[], instance: VideoModel) { const entry = { actorId: actor.id, - videoId: instance.id, + videoId: video.id, url: shareUrl } @@ -69,10 +71,10 @@ export { // --------------------------------------------------------------------------- -async function shareByServer (video: VideoModel, t: Transaction) { +async function shareByServer (video: MVideo, t: Transaction) { const serverActor = await getServerActor() - const serverShareUrl = getVideoAnnounceActivityPubUrl(serverActor, video) + const serverShareUrl = getLocalVideoAnnounceActivityPubUrl(serverActor, video) const [ serverShare ] = await VideoShareModel.findOrCreate({ defaults: { actorId: serverActor.id, @@ -88,8 +90,8 @@ async function shareByServer (video: VideoModel, t: Transaction) { return sendVideoAnnounce(serverActor, serverShare, video, t) } -async function shareByVideoChannel (video: VideoModel, t: Transaction) { - const videoChannelShareUrl = getVideoAnnounceActivityPubUrl(video.VideoChannel.Actor, video) +async function shareByVideoChannel (video: MVideoAccountLight, t: Transaction) { + const videoChannelShareUrl = getLocalVideoAnnounceActivityPubUrl(video.VideoChannel.Actor, video) const [ videoChannelShare ] = await VideoShareModel.findOrCreate({ defaults: { actorId: video.VideoChannel.actorId, @@ -105,7 +107,7 @@ async function shareByVideoChannel (video: VideoModel, t: Transaction) { return sendVideoAnnounce(video.VideoChannel.Actor, videoChannelShare, video, t) } -async function undoShareByVideoChannel (video: VideoModel, oldVideoChannel: VideoChannelModel, t: Transaction) { +async function undoShareByVideoChannel (video: MVideo, oldVideoChannel: MChannelActorLight, t: Transaction) { // Load old share const oldShare = await VideoShareModel.load(oldVideoChannel.actorId, video.id, t) if (!oldShare) return new Error('Cannot find old video channel share ' + oldVideoChannel.actorId + ' for video ' + video.id)