UNPKG

@signalwire/js

Version:
293 lines (277 loc) 8.76 kB
import { CallJoinedEvent, CallJoinedEventParams, CallUpdatedEvent, CallUpdatedEventParams, FabricLayoutChangedEvent, FabricMemberJoinedEvent, FabricMemberJoinedEventParams, FabricMemberLeftEvent, FabricMemberLeftEventParams, FabricMemberTalkingEvent, FabricMemberTalkingEventParams, FabricMemberUpdatedEvent, FabricMemberUpdatedEventParams, InternalFabricMemberEntity, InternalFabricMemberEntityUpdated, InternalFabricRoomSessionEntity, InternalVideoMemberEntity, InternalVideoMemberEntityUpdated, InternalVideoRoomEntity, InternalVideoRoomSessionEntity, MapToPubSubShape, VideoLayoutChangedEvent, VideoMemberJoinedEvent, VideoMemberJoinedEventParams, VideoMemberLeftEvent, VideoMemberLeftEventParams, VideoMemberTalkingEvent, VideoMemberTalkingEventParams, VideoMemberUpdatedEvent, VideoMemberUpdatedEventParams, VideoRoomSubscribedEvent, VideoRoomSubscribedEventParams, VideoRoomUpdatedEvent, VideoRoomUpdatedEventParams, } from '@signalwire/core' /** * Map the InternalFabricMemberEntity to InternalVideoMemberEntity */ export const mapInternalFabricMemberToInternalVideoMemberEntity = ( params: InternalFabricMemberEntity ): InternalVideoMemberEntity => { return { id: params.member_id, room_id: params.room_id, room_session_id: params.room_session_id, name: params.name, type: params.type, handraised: params.handraised, visible: params.visible, audio_muted: params.audio_muted, video_muted: params.video_muted, deaf: params.deaf, input_volume: params.input_volume, output_volume: params.output_volume, input_sensitivity: params.input_sensitivity, meta: params.meta, talking: params.talking, current_position: params.current_position, requested_position: params.requested_position, parent_id: params.parent_id, } } /** * Map the InternalFabricMemberEntityUpdated to InternalVideoMemberEntityUpdated */ export const mapInternalFabricMemberToInternalVideoMemberUpdatedEntity = ( params: InternalFabricMemberEntityUpdated ): InternalVideoMemberEntityUpdated => { return { ...mapInternalFabricMemberToInternalVideoMemberEntity(params), updated: params.updated.map((key) => key === 'member_id' ? 'id' : (key as keyof InternalVideoMemberEntity) ), } } /** * Map InternalFabricRoomSessionEntity to InternalVideoRoomEntity */ export const mapInternalFabricRoomToInternalVideoRoomEntity = ( params: InternalFabricRoomSessionEntity ): InternalVideoRoomEntity => { return { room_id: params.room_id, room_session_id: params.room_session_id, event_channel: params.event_channel, name: params.name, recording: params.recording, hide_video_muted: params.hide_video_muted, preview_url: params.preview_url, recordings: params.recordings, playbacks: params.playbacks, streams: params.streams, prioritize_handraise: params.prioritize_handraise, } } /** * Map InternalFabricRoomSessionEntity to InternalVideoRoomSessionEntity */ export const mapInternalFabricRoomToInternalVideoRoomSessionEntity = ( params: InternalFabricRoomSessionEntity ): InternalVideoRoomSessionEntity => { return { id: params.id, display_name: params.display_name, room_id: params.room_id, room_session_id: params.room_session_id, event_channel: params.event_channel, name: params.name, recording: params.recording, recordings: params.recordings, playbacks: params.playbacks, hide_video_muted: params.hide_video_muted, preview_url: params.preview_url, layout_name: params.layout_name, locked: params.locked, meta: params.meta, members: params.members.map( mapInternalFabricMemberToInternalVideoMemberEntity ), streaming: params.streaming, streams: params.streams, prioritize_handraise: params.prioritize_handraise, updated: params.updated, } } /** * Map the "call.joined" event params to "video.room.subscribed" event params */ export const mapCallJoinedToRoomSubscribedEventParams = ( params: CallJoinedEventParams ): VideoRoomSubscribedEventParams => { return { call_id: params.call_id, member_id: params.member_id, room: { ...mapInternalFabricRoomToInternalVideoRoomEntity(params.room_session), members: params.room_session.members.map( mapInternalFabricMemberToInternalVideoMemberEntity ), }, room_session: { ...mapInternalFabricRoomToInternalVideoRoomSessionEntity( params.room_session ), members: params.room_session.members.map( mapInternalFabricMemberToInternalVideoMemberEntity ), }, } } /** * Map the "call.joined" action to "video.room.subscribed" action */ export const mapCallJoinedToRoomSubscribedAction = ( action: MapToPubSubShape<CallJoinedEvent> ): MapToPubSubShape<VideoRoomSubscribedEvent> => { return { type: `video.room.subscribed`, payload: mapCallJoinedToRoomSubscribedEventParams(action.payload), } } /** * Map the "call.updated" event params to "video.room.updated" event params */ export const mapCallUpdatedToRoomUpdatedEventParams = ( params: CallUpdatedEventParams ): VideoRoomUpdatedEventParams => { return { room_id: params.room_id, room_session_id: params.room_session_id, room: mapInternalFabricRoomToInternalVideoRoomEntity(params.room_session), room_session: mapInternalFabricRoomToInternalVideoRoomSessionEntity( params.room_session ), } } /** * Map the "call.updated" action to "video.room.updated" action */ export const mapCallUpdatedToRoomUpdatedEventAction = ( action: MapToPubSubShape<CallUpdatedEvent> ): MapToPubSubShape<VideoRoomUpdatedEvent> => { return { type: `video.room.updated`, payload: mapCallUpdatedToRoomUpdatedEventParams(action.payload), } } /** * Map the "member.joined" and "member.left" event params * to "video.member.joined" and "video.member.left" event params */ export const mapFabricMemberToVideoMemberJoinAndLeftEventParams = ( params: FabricMemberJoinedEventParams | FabricMemberLeftEventParams ): VideoMemberJoinedEventParams | VideoMemberLeftEventParams => { return { room_session_id: params.room_session_id, room_id: params.room_id, member: mapInternalFabricMemberToInternalVideoMemberEntity(params.member), } } /** * Map the "member.joined" and "member.left" actions * to "video.member.joined" and "video.member.left" actions */ export const mapFabricMemberActionToVideoMemberJoinAndLeftAction = ( action: MapToPubSubShape<FabricMemberJoinedEvent | FabricMemberLeftEvent> ): MapToPubSubShape<VideoMemberJoinedEvent | VideoMemberLeftEvent> => { return { type: `video.${action.type}`, payload: mapFabricMemberToVideoMemberJoinAndLeftEventParams(action.payload), } } /** * Map the "member.updated" event params to "video.member.updated" event params */ export const mapFabricMemberEventToVideoMemberUpdatedEventParams = ( params: FabricMemberUpdatedEventParams ): VideoMemberUpdatedEventParams => { return { room_session_id: params.room_session_id, room_id: params.room_id, member: mapInternalFabricMemberToInternalVideoMemberUpdatedEntity( params.member ), } } /** * Map the "member.updated" action to "video.member.updated" action */ export const mapFabricMemberActionToVideoMemberUpdatedAction = ( action: MapToPubSubShape<FabricMemberUpdatedEvent> ): MapToPubSubShape<VideoMemberUpdatedEvent> => { return { type: `video.${action.type}`, payload: mapFabricMemberEventToVideoMemberUpdatedEventParams( action.payload ), } } /** * Map the "member.talking" event params to "video.member.talking" event params */ export const mapFabricMemberToVideoMemberTalkingEventParams = ( params: FabricMemberTalkingEventParams ): VideoMemberTalkingEventParams => { return { room_session_id: params.room_session_id, room_id: params.room_id, member: { id: params.member.member_id, talking: params.member.talking, }, } } /** * Map the "member.talking" action to "video.member.talking" action */ export const mapFabricMemberActionToVideoMemberTalkingAction = ( action: MapToPubSubShape<FabricMemberTalkingEvent> ): MapToPubSubShape<VideoMemberTalkingEvent> => { return { type: `video.${action.type}`, payload: mapFabricMemberToVideoMemberTalkingEventParams(action.payload), } } /** * Map the "layout.changed" action to "video.layout.changed" action */ export const mapFabricLayoutActionToVideoLayoutAction = ( action: MapToPubSubShape<FabricLayoutChangedEvent> ): MapToPubSubShape<VideoLayoutChangedEvent> => { return { type: `video.${action.type}`, payload: action.payload, } }