Skip to content

Commit

Permalink
Allow locking of room settings
Browse files Browse the repository at this point in the history
  • Loading branch information
havfo committed Jul 11, 2024
1 parent 57f356d commit ad2d045
Showing 1 changed file with 51 additions and 0 deletions.
51 changes: 51 additions & 0 deletions src/services/roomSettings/roomSettings.schema.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,42 +25,71 @@ export const roomSettingsSchema = Type.Object(

// Look and feel
logo: Type.Optional(Type.String()),
lockedLogo: Type.Boolean(),
background: Type.Optional(Type.String()),
lockedBackground: Type.Boolean(),

// Features of the room
maxActiveVideos: Type.Number(),
lockedMaxActiveVideos: Type.Boolean(),
locked: Type.Boolean(),
lockedLocked: Type.Boolean(),
breakoutsEnabled: Type.Boolean(),
lockedBreakoutsEnabled: Type.Boolean(),
chatEnabled: Type.Boolean(),
lockedChatEnabled: Type.Boolean(),
raiseHandEnabled: Type.Boolean(),
lockedRaiseHandEnabled: Type.Boolean(),
filesharingEnabled: Type.Boolean(),
lockedFilesharingEnabled: Type.Boolean(),
localRecordingEnabled: Type.Boolean(),
lockedLocalRecordingEnabled: Type.Boolean(),

// Video settings
videoCodec: Type.Optional(Type.String()), // vp8, vp9, h264, h265, av1
lockedVideoCodec: Type.Boolean(),
simulcast: Type.Optional(Type.Boolean()),
lockedSimulcast: Type.Boolean(),
videoResolution: Type.Optional(VideoResolution), // low, medium, high, veryhigh, ultra
lockedVideoResolution: Type.Boolean(),
videoFramerate: Type.Optional(Type.Number()),
lockedVideoFramerate: Type.Boolean(),

// Audio settings
audioCodec: Type.Optional(Type.String()), // opus, g722, pcmu, pcma, isac, ilbc, g729, speex
lockedAudioCodec: Type.Boolean(),
autoGainControl: Type.Optional(Type.Boolean()),
lockedAutoGainControl: Type.Boolean(),
echoCancellation: Type.Optional(Type.Boolean()),
lockedEchoCancellation: Type.Boolean(),
noiseSuppression: Type.Optional(Type.Boolean()),
lockedNoiseSuppression: Type.Boolean(),
sampleRate: Type.Optional(Type.Number()),
lockedSampleRate: Type.Boolean(),
channelCount: Type.Optional(Type.Number()),
lockedChannelCount: Type.Boolean(),
sampleSize: Type.Optional(Type.Number()),
lockedSampleSize: Type.Boolean(),
opusStereo: Type.Optional(Type.Boolean()),
lockedOpusStereo: Type.Boolean(),
opusDtx: Type.Optional(Type.Boolean()),
lockedOpusDtx: Type.Boolean(),
opusFec: Type.Optional(Type.Boolean()),
lockedOpusFec: Type.Boolean(),
opusPtime: Type.Optional(Type.Number()),
lockedOpusPtime: Type.Boolean(),
opusMaxPlaybackRate: Type.Optional(Type.Number()),
lockedOpusMaxPlaybackRate: Type.Boolean(),

// Screen sharing settings
screenSharingCodec: Type.Optional(Type.String()),
lockedScreenSharingCodec: Type.Boolean(),
screenSharingSimulcast: Type.Optional(Type.Boolean()),
lockedScreenSharingSimulcast: Type.Boolean(),
screenSharingResolution: Type.Optional(VideoResolution),
lockedScreenSharingResolution: Type.Boolean(),
screenSharingFramerate: Type.Optional(Type.Number()),
lockedScreenSharingFramerate: Type.Boolean(),
},
{ $id: 'RoomSettings', additionalProperties: false }
);
Expand All @@ -75,27 +104,49 @@ export const roomSettingsResolver = resolve<RoomSettings, HookContext<RoomSettin

export const roomSettingsExternalResolver = resolve<RoomSettings, HookContext<RoomSettingsService>>({
logo: async (value) => value ?? undefined,
lockedLogo: async (value) => value ?? false,
background: async (value) => value ?? undefined,
lockedBackground: async (value) => value ?? false,
videoCodec: async (value) => value ?? undefined,
lockedVideoCodec: async (value) => value ?? false,
simulcast: async (value) => value ?? undefined,
lockedSimulcast: async (value) => value ?? false,
videoResolution: async (value) => value ?? undefined,
lockedVideoResolution: async (value) => value ?? false,
videoFramerate: async (value) => value ?? undefined,
lockedVideoFramerate: async (value) => value ?? false,
audioCodec: async (value) => value ?? undefined,
lockedAudioCodec: async (value) => value ?? false,
autoGainControl: async (value) => value ?? undefined,
lockedAutoGainControl: async (value) => value ?? false,
echoCancellation: async (value) => value ?? undefined,
lockedEchoCancellation: async (value) => value ?? false,
noiseSuppression: async (value) => value ?? undefined,
lockedNoiseSuppression: async (value) => value ?? false,
sampleRate: async (value) => value ?? undefined,
lockedSampleRate: async (value) => value ?? false,
channelCount: async (value) => value ?? undefined,
lockedChannelCount: async (value) => value ?? false,
sampleSize: async (value) => value ?? undefined,
lockedSampleSize: async (value) => value ?? false,
opusStereo: async (value) => value ?? undefined,
lockedOpusStereo: async (value) => value ?? false,
opusDtx: async (value) => value ?? undefined,
lockedOpusDtx: async (value) => value ?? false,
opusFec: async (value) => value ?? undefined,
lockedOpusFec: async (value) => value ?? false,
opusPtime: async (value) => value ?? undefined,
lockedOpusPtime: async (value) => value ?? false,
opusMaxPlaybackRate: async (value) => value ?? undefined,
lockedOpusMaxPlaybackRate: async (value) => value ?? false,
screenSharingCodec: async (value) => value ?? undefined,
lockedScreenSharingCodec: async (value) => value ?? false,
screenSharingSimulcast: async (value) => value ?? undefined,
lockedScreenSharingSimulcast: async (value) => value ?? false,
screenSharingResolution: async (value) => value ?? undefined,
lockedScreenSharingResolution: async (value) => value ?? false,
screenSharingFramerate: async (value) => value ?? undefined,
lockedScreenSharingFramerate: async (value) => value ?? false,
});

// Schema for creating new entries
Expand Down

0 comments on commit ad2d045

Please sign in to comment.