UNPKG

@coursebuilder/core

Version:

Core package for Course Builder

55 lines (50 loc) 1.4 kB
import { CoreInngestFunctionInput, CoreInngestHandler, CoreInngestTrigger, } from '../../create-inngest-middleware' import { MUX_WEBHOOK_EVENT } from '../events/event-video-mux-webhook' const videoReadyConfig = { id: `mux-video-asset-ready`, name: 'Mux Video Asset Ready', } const videoReadyTrigger: CoreInngestTrigger = { event: MUX_WEBHOOK_EVENT, if: 'event.data.muxWebhookEvent.type == "video.asset.ready"', } const videoReadyHandler: CoreInngestHandler = async ({ event, step, db, partyProvider, }: CoreInngestFunctionInput) => { const videoResource = await step.run('Load Video Resource', async () => { return db.getVideoResource(event.data.muxWebhookEvent.data.passthrough) }) if (videoResource) { await step.run('update the video resource in database', async () => { return db.updateContentResourceFields({ id: videoResource.id as string, fields: { state: 'ready', }, }) }) } await step.run('announce asset ready', async () => { return await partyProvider.broadcastMessage({ body: { body: videoResource?.muxPlaybackId, requestId: event.data.muxWebhookEvent.data.passthrough, name: 'video.asset.ready', }, roomId: event.data.muxWebhookEvent.data.passthrough, }) }) return event.data.muxWebhookEvent.data } export const videoReady = { config: videoReadyConfig, trigger: videoReadyTrigger, handler: videoReadyHandler, }