]>
Commit | Line | Data |
---|---|---|
54141398 | 1 | import { Transaction } from 'sequelize' |
50d6de9c C |
2 | import { ActivityAudience, ActivityUpdate } from '../../../../shared/models/activitypub' |
3 | import { VideoPrivacy } from '../../../../shared/models/videos' | |
265ba139 | 4 | import { UserModel } from '../../../models/account/user' |
50d6de9c | 5 | import { ActorModel } from '../../../models/activitypub/actor' |
3fd3ab2d | 6 | import { VideoModel } from '../../../models/video/video' |
3fd3ab2d | 7 | import { VideoShareModel } from '../../../models/video/video-share' |
892211e8 | 8 | import { getUpdateActivityPubUrl } from '../url' |
e12a0092 | 9 | import { audiencify, broadcastToFollowers, getAudience } from './misc' |
54141398 | 10 | |
3fd3ab2d | 11 | async function sendUpdateVideo (video: VideoModel, t: Transaction) { |
50d6de9c | 12 | const byActor = video.VideoChannel.Account.Actor |
54141398 C |
13 | |
14 | const url = getUpdateActivityPubUrl(video.url, video.updatedAt.toISOString()) | |
15 | const videoObject = video.toActivityPubObject() | |
50d6de9c C |
16 | const audience = await getAudience(byActor, t, video.privacy === VideoPrivacy.PUBLIC) |
17 | ||
18 | const data = await updateActivityData(url, byActor, videoObject, t, audience) | |
54141398 | 19 | |
50d6de9c C |
20 | const actorsInvolved = await VideoShareModel.loadActorsByShare(video.id, t) |
21 | actorsInvolved.push(byActor) | |
54141398 | 22 | |
50d6de9c | 23 | return broadcastToFollowers(data, byActor, actorsInvolved, t) |
54141398 C |
24 | } |
25 | ||
265ba139 C |
26 | async function sendUpdateUser (user: UserModel, t: Transaction) { |
27 | const byActor = user.Account.Actor | |
28 | ||
29 | const url = getUpdateActivityPubUrl(byActor.url, byActor.updatedAt.toISOString()) | |
30 | const accountObject = user.Account.toActivityPubObject() | |
31 | const audience = await getAudience(byActor, t) | |
32 | const data = await updateActivityData(url, byActor, accountObject, t, audience) | |
33 | ||
34 | const actorsInvolved = await VideoShareModel.loadActorsByVideoOwner(byActor.id, t) | |
35 | actorsInvolved.push(byActor) | |
36 | ||
37 | return broadcastToFollowers(data, byActor, actorsInvolved, t) | |
38 | } | |
39 | ||
54141398 C |
40 | // --------------------------------------------------------------------------- |
41 | ||
42 | export { | |
265ba139 | 43 | sendUpdateUser, |
54141398 C |
44 | sendUpdateVideo |
45 | } | |
46 | ||
47 | // --------------------------------------------------------------------------- | |
48 | ||
50d6de9c C |
49 | async function updateActivityData ( |
50 | url: string, | |
51 | byActor: ActorModel, | |
52 | object: any, | |
53 | t: Transaction, | |
54 | audience?: ActivityAudience | |
55 | ): Promise<ActivityUpdate> { | |
56 | if (!audience) { | |
57 | audience = await getAudience(byActor, t) | |
58 | } | |
59 | ||
e12a0092 | 60 | return audiencify({ |
54141398 C |
61 | type: 'Update', |
62 | id: url, | |
50d6de9c | 63 | actor: byActor.url, |
e12a0092 C |
64 | object: audiencify(object, audience) |
65 | }, audience) | |
54141398 | 66 | } |