]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - server/lib/activitypub/send/send-add.ts
Move models to typescript-sequelize
[github/Chocobozzz/PeerTube.git] / server / lib / activitypub / send / send-add.ts
CommitLineData
54141398 1import { Transaction } from 'sequelize'
3fd3ab2d
C
2import { ActivityAdd } from '../../../../shared/models/activitypub'
3import { VideoPrivacy } from '../../../../shared/models/videos'
4import { AccountModel } from '../../../models/account/account'
5import { VideoModel } from '../../../models/video/video'
54141398
C
6import { broadcastToFollowers, getAudience } from './misc'
7
3fd3ab2d 8async function sendAddVideo (video: VideoModel, t: Transaction) {
54141398
C
9 const byAccount = video.VideoChannel.Account
10
11 const videoObject = video.toActivityPubObject()
25ed141c 12 const data = await addActivityData(video.url, byAccount, video, video.VideoChannel.url, videoObject, t)
54141398
C
13
14 return broadcastToFollowers(data, byAccount, [ byAccount ], t)
15}
16
25ed141c
C
17async function addActivityData (
18 url: string,
3fd3ab2d
C
19 byAccount: AccountModel,
20 video: VideoModel,
25ed141c
C
21 target: string,
22 object: any,
23 t: Transaction
3fd3ab2d 24): Promise<ActivityAdd> {
54141398
C
25 const videoPublic = video.privacy === VideoPrivacy.PUBLIC
26
25ed141c 27 const { to, cc } = await getAudience(byAccount, t, videoPublic)
3fd3ab2d
C
28
29 return {
54141398
C
30 type: 'Add',
31 id: url,
32 actor: byAccount.url,
33 to,
34 cc,
35 object,
36 target
37 }
54141398
C
38}
39
40// ---------------------------------------------------------------------------
41
42export {
43 addActivityData,
44 sendAddVideo
45}