You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
939 B
TypeScript
28 lines
939 B
TypeScript
import { Job } from 'bullmq'
|
|||
import { Notifier } from '@server/lib/notifier/index.js'
|
|||
import { VideoModel } from '@server/models/video/video.js'
|
|||
import { NotifyPayload } from '@peertube/peertube-models'
|
|||
import { logger } from '../../../helpers/logger.js'
|
|||
|
|||
async function processNotify (job: Job) {
|
|||
const payload = job.data as NotifyPayload
|
|||
logger.info('Processing %s notification in job %s.', payload.action, job.id)
|
|||
|
|||
if (payload.action === 'new-video') return doNotifyNewVideo(payload)
|
|||
}
|
|||
|
|||
// ---------------------------------------------------------------------------
|
|||
|
|||
export {
|
|||
processNotify
|
|||
}
|
|||
|
|||
// ---------------------------------------------------------------------------
|
|||
|
|||
async function doNotifyNewVideo (payload: NotifyPayload & { action: 'new-video' }) {
|
|||
const refreshedVideo = await VideoModel.loadFull(payload.videoUUID)
|
|||
if (!refreshedVideo) return
|
|||
|
|||
Notifier.Instance.notifyOnNewVideoOrLiveIfNeeded(refreshedVideo)
|
|||
}
|