livekit-client
Version:
JavaScript/TypeScript client SDK for LiveKit
43 lines (37 loc) • 1.34 kB
text/typescript
import { TrackPermission } from '@livekit/protocol';
export interface ParticipantTrackPermission {
/**
* The participant identity this permission applies to.
* You can either provide this or `participantSid`
*/
participantIdentity?: string;
/**
* The participant server id this permission applies to.
* You can either provide this or `participantIdentity`
*/
participantSid?: string;
/**
* Grant permission to all all tracks. Takes precedence over allowedTrackSids.
* false if unset.
*/
allowAll?: boolean;
/**
* The list of track ids that the target participant can subscribe to.
* When unset, it'll allow all tracks to be subscribed by the participant.
* When empty, this participant is disallowed from subscribing to any tracks.
*/
allowedTrackSids?: string[];
}
export function trackPermissionToProto(perms: ParticipantTrackPermission): TrackPermission {
if (!perms.participantSid && !perms.participantIdentity) {
throw new Error(
'Invalid track permission, must provide at least one of participantIdentity and participantSid',
);
}
return new TrackPermission({
participantIdentity: perms.participantIdentity ?? '',
participantSid: perms.participantSid ?? '',
allTracks: perms.allowAll ?? false,
trackSids: perms.allowedTrackSids || [],
});
}