]>
Commit | Line | Data |
---|---|---|
0032ebe9 | 1 | import { Transaction } from 'sequelize' |
3fd3ab2d | 2 | import { ActivityAudience, ActivityLike } from '../../../../shared/models/activitypub' |
50d6de9c | 3 | import { ActorModel } from '../../../models/activitypub/actor' |
3fd3ab2d | 4 | import { VideoModel } from '../../../models/video/video' |
0032ebe9 | 5 | import { getVideoLikeActivityPubUrl } from '../url' |
a2377d15 C |
6 | import { sendVideoRelatedActivity } from './utils' |
7 | import { audiencify, getAudience } from '../audience' | |
8e0fd45e | 8 | import { logger } from '../../../helpers/logger' |
0032ebe9 | 9 | |
07197db4 | 10 | async function sendLike (byActor: ActorModel, video: VideoModel, t: Transaction) { |
8e0fd45e C |
11 | logger.info('Creating job to like %s.', video.url) |
12 | ||
a2377d15 C |
13 | const activityBuilder = (audience: ActivityAudience) => { |
14 | const url = getVideoLikeActivityPubUrl(byActor, video) | |
0032ebe9 | 15 | |
a2377d15 | 16 | return buildLikeActivity(url, byActor, video, audience) |
07197db4 | 17 | } |
0032ebe9 | 18 | |
a2377d15 | 19 | return sendVideoRelatedActivity(activityBuilder, { byActor, video, transaction: t }) |
0032ebe9 C |
20 | } |
21 | ||
c48e82b5 | 22 | function buildLikeActivity (url: string, byActor: ActorModel, video: VideoModel, audience?: ActivityAudience): ActivityLike { |
2186386c C |
23 | if (!audience) audience = getAudience(byActor) |
24 | ||
25 | return audiencify( | |
26 | { | |
2186386c | 27 | id: url, |
5c6d985f | 28 | type: 'Like' as 'Like', |
2186386c C |
29 | actor: byActor.url, |
30 | object: video.url | |
31 | }, | |
32 | audience | |
33 | ) | |
0032ebe9 C |
34 | } |
35 | ||
36 | // --------------------------------------------------------------------------- | |
37 | ||
38 | export { | |
07197db4 | 39 | sendLike, |
c48e82b5 | 40 | buildLikeActivity |
0032ebe9 | 41 | } |