aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/activitypub/process/process-announce.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/activitypub/process/process-announce.ts')
-rw-r--r--server/lib/activitypub/process/process-announce.ts19
1 files changed, 10 insertions, 9 deletions
diff --git a/server/lib/activitypub/process/process-announce.ts b/server/lib/activitypub/process/process-announce.ts
index 9adb40e01..bf7d7879d 100644
--- a/server/lib/activitypub/process/process-announce.ts
+++ b/server/lib/activitypub/process/process-announce.ts
@@ -7,6 +7,7 @@ import { VideoModel } from '../../../models/video/video'
7import { VideoShareModel } from '../../../models/video/video-share' 7import { VideoShareModel } from '../../../models/video/video-share'
8import { getOrCreateActorAndServerAndModel } from '../actor' 8import { getOrCreateActorAndServerAndModel } from '../actor'
9import { forwardActivity } from '../send/misc' 9import { forwardActivity } from '../send/misc'
10import { getOrCreateAccountAndVideoAndChannel } from '../videos'
10import { processCreateActivity } from './process-create' 11import { processCreateActivity } from './process-create'
11 12
12async function processAnnounceActivity (activity: ActivityAnnounce) { 13async function processAnnounceActivity (activity: ActivityAnnounce) {
@@ -44,19 +45,19 @@ function processVideoShare (actorAnnouncer: ActorModel, activity: ActivityAnnoun
44 return retryTransactionWrapper(shareVideo, options) 45 return retryTransactionWrapper(shareVideo, options)
45} 46}
46 47
47function shareVideo (actorAnnouncer: ActorModel, activity: ActivityAnnounce) { 48async function shareVideo (actorAnnouncer: ActorModel, activity: ActivityAnnounce) {
48 const announced = activity.object 49 const announced = activity.object
50 let video: VideoModel
51
52 if (typeof announced === 'string') {
53 const res = await getOrCreateAccountAndVideoAndChannel(announced)
54 video = res.video
55 } else {
56 video = await processCreateActivity(announced)
57 }
49 58
50 return sequelizeTypescript.transaction(async t => { 59 return sequelizeTypescript.transaction(async t => {
51 // Add share entry 60 // Add share entry
52 let video: VideoModel
53
54 if (typeof announced === 'string') {
55 video = await VideoModel.loadByUrlAndPopulateAccount(announced)
56 if (!video) throw new Error('Unknown video to share ' + announced)
57 } else {
58 video = await processCreateActivity(announced)
59 }
60 61
61 const share = { 62 const share = {
62 actorId: actorAnnouncer.id, 63 actorId: actorAnnouncer.id,