1 import { Transaction } from 'sequelize'
2 import { VideoPrivacy } from '../../../shared/models/videos'
3 import { getServerActor } from '../../helpers/utils'
4 import { VideoModel } from '../../models/video/video'
5 import { VideoShareModel } from '../../models/video/video-share'
6 import { sendVideoAnnounce } from './send'
7 import { getAnnounceActivityPubUrl } from './url'
9 async function shareVideoByServerAndChannel (video: VideoModel, t: Transaction) {
10 if (video.privacy === VideoPrivacy.PRIVATE) return undefined
12 const serverActor = await getServerActor()
14 const serverShareUrl = getAnnounceActivityPubUrl(video.url, serverActor)
15 const serverSharePromise = VideoShareModel.findOrCreate({
17 actorId: serverActor.id,
25 }).then(([ serverShare, created ]) => {
26 if (created) return sendVideoAnnounce(serverActor, serverShare, video, t)
31 const videoChannelShareUrl = getAnnounceActivityPubUrl(video.url, video.VideoChannel.Actor)
32 const videoChannelSharePromise = VideoShareModel.findOrCreate({
34 actorId: video.VideoChannel.actorId,
36 url: videoChannelShareUrl
39 url: videoChannelShareUrl
42 }).then(([ videoChannelShare, created ]) => {
43 if (created) return sendVideoAnnounce(serverActor, videoChannelShare, video, t)
50 videoChannelSharePromise
55 shareVideoByServerAndChannel