]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/controllers/activitypub/outbox.ts
Fix video_share_url duplicate key in transcoding job
[github/Chocobozzz/PeerTube.git] / server / controllers / activitypub / outbox.ts
index ab12a7c4b96a324b21b9cb225e5b8384cf4ff608..0077e1d0b0e6429a2a8114606421babefd5b5995 100644 (file)
@@ -1,11 +1,12 @@
 import * as express from 'express'
 import { Activity } from '../../../shared/models/activitypub/activity'
+import { VideoPrivacy } from '../../../shared/models/videos'
 import { activityPubCollectionPagination } from '../../helpers/activitypub'
 import { pageToStartAndCount } from '../../helpers/core-utils'
+import { logger } from '../../helpers/logger'
 import { ACTIVITY_PUB } from '../../initializers/constants'
 import { announceActivityData, createActivityData } from '../../lib/activitypub/send'
 import { buildAudience } from '../../lib/activitypub/send/misc'
-import { getAnnounceActivityPubUrl } from '../../lib/activitypub/url'
 import { asyncMiddleware, localAccountValidator } from '../../middlewares'
 import { AccountModel } from '../../models/account/account'
 import { ActorModel } from '../../models/activitypub/actor'
@@ -43,21 +44,18 @@ async function outboxController (req: express.Request, res: express.Response, ne
   const followersMatrix = await ActorModel.getActorsFollowerSharedInboxUrls(actors, undefined)
 
   for (const video of data.data) {
-    const videoObject = video.toActivityPubObject()
-
     const byActor = video.VideoChannel.Account.Actor
-    const createActivityAudience = buildAudience(followersMatrix[byActor.id])
+    const createActivityAudience = buildAudience(followersMatrix[byActor.id], video.privacy === VideoPrivacy.PUBLIC)
 
     // This is a shared video
     if (video.VideoShares !== undefined && video.VideoShares.length !== 0) {
-      const createActivity = await createActivityData(video.url, byActor, videoObject, undefined, createActivityAudience)
-
-      const announceAudience = buildAudience(followersMatrix[actor.id])
-      const url = getAnnounceActivityPubUrl(video.url, actor)
-      const announceActivity = await announceActivityData(url, actor, createActivity, undefined, announceAudience)
+      const videoShare = video.VideoShares[0]
+      const announceAudience = buildAudience(followersMatrix[actor.id], video.privacy === VideoPrivacy.PUBLIC)
+      const announceActivity = await announceActivityData(videoShare.url, actor, video.url, undefined, announceAudience)
 
       activities.push(announceActivity)
     } else {
+      const videoObject = video.toActivityPubObject()
       const createActivity = await createActivityData(video.url, byActor, videoObject, undefined, createActivityAudience)
 
       activities.push(createActivity)
@@ -68,7 +66,10 @@ async function outboxController (req: express.Request, res: express.Response, ne
     data: activities,
     total: data.total
   }
-  const json = activityPubCollectionPagination(account.Actor.url + '/outbox', page, newResult)
+  const actorOutboxUrl = account.Actor.url + '/outbox'
+  const json = activityPubCollectionPagination(actorOutboxUrl, page, newResult)
+
+  logger.info('Receiving outbox request for %s.', actorOutboxUrl)
 
   return res.json(json).end()
 }