]>
Commit | Line | Data |
---|---|---|
1e7eb25f C |
1 | import { Transaction } from 'sequelize' |
2 | import { ActivityAudience, ActivityView } from '../../../../shared/models/activitypub' | |
3 | import { ActorModel } from '../../../models/activitypub/actor' | |
1e7eb25f C |
4 | import { getVideoLikeActivityPubUrl } from '../url' |
5 | import { sendVideoRelatedActivity } from './utils' | |
6 | import { audiencify, getAudience } from '../audience' | |
7 | import { logger } from '../../../helpers/logger' | |
2c8776fc | 8 | import { MActorAudience, MVideoImmutable, MVideoUrl } from '@server/typings/models' |
1e7eb25f | 9 | |
2c8776fc | 10 | async function sendView (byActor: ActorModel, video: MVideoImmutable, t: Transaction) { |
1e7eb25f C |
11 | logger.info('Creating job to send view of %s.', video.url) |
12 | ||
13 | const activityBuilder = (audience: ActivityAudience) => { | |
14 | const url = getVideoLikeActivityPubUrl(byActor, video) | |
15 | ||
16 | return buildViewActivity(url, byActor, video, audience) | |
17 | } | |
18 | ||
598edb8a | 19 | return sendVideoRelatedActivity(activityBuilder, { byActor, video, transaction: t, contextType: 'View' }) |
1e7eb25f C |
20 | } |
21 | ||
453e83ea | 22 | function buildViewActivity (url: string, byActor: MActorAudience, video: MVideoUrl, audience?: ActivityAudience): ActivityView { |
1e7eb25f C |
23 | if (!audience) audience = getAudience(byActor) |
24 | ||
25 | return audiencify( | |
26 | { | |
27 | id: url, | |
28 | type: 'View' as 'View', | |
29 | actor: byActor.url, | |
30 | object: video.url | |
31 | }, | |
32 | audience | |
33 | ) | |
34 | } | |
35 | ||
36 | // --------------------------------------------------------------------------- | |
37 | ||
38 | export { | |
39 | sendView | |
40 | } |