import { Injectable, Logger } from '@nestjs/common' import { User } from '@prisma/client' // @ts-expect-error import { AccessToken, RoomServiceClient } from 'livekit-server-sdk' @Injectable() export class LiveKitService { constructor() {} async createToken(me: User, roomName: string) { if (!process.env.LIVEKIT_API_KEY || !process.env.LIVEKIT_API_SECRET) { throw new Error('LIVEKIT_API_KEY and LIVEKIT_API_SECRET must be set') } if (!me.name) { throw new Error('User must have a name') } const token = new AccessToken(process.env.LIVEKIT_API_KEY as string, process.env.LIVEKIT_API_SECRET as string, { identity: me.id, name: me.name, metadata: me.avatarUrl ?? '', }) token.addGrant({ roomJoin: true, room: roomName, }) return await token.toJwt() } getServerUrl() { return process.env.LIVEKIT_URL } }