UNPKG

enx-rtc-react-native

Version:

It is a react native component for Enablex users.

619 lines (556 loc) 30.1 kB
import { reassignEvents } from "./EnxHelper"; import { isString, isBoolean } from "underscore"; const sanitizeRoomEvents = (events) => { try { if (typeof events !== "object") { return {}; } const customEvents = { ios: { roomConnected: "didRoomConnected" /* Event called on success of room connection. */, roomError: "didError" /* Event called on error while room connection. */, eventError: "didEventError" /* Event called on any event error. */, roomDisconnected: "didRoomDisconnect" /* Event called on room disconnect. */, streamPublished: "didPublishedStream" /* Event called on publish stream success. */, streamAdded: "didStreamAdded" /* Event called on stream added in the room. */, streamSubscribed: "didSubscribedStream" /* Event called on subscribe stream success. */, activeTalkerList: "didActiveTalkerList" /* Event called to get updated active talker list. */, roomRecordingOn: "didRoomRecordStart" /* Event when recording is started in the room, (either implicitly or explicitly), all connected users are notified that room is being recorded.. */, roomRecordingOff: "didRoomRecordStop" /* Event when the recording is turned off (either implicitly or explicitly), all connected users are notified that recording has been stopped in the room. */, startRecordingEvent: "didStartRecordingEvent" /* Event called when recording started by the moderator. */, stopRecordingEvent: "didStopRecordingEvent" /* Event called when recording stopped by the moderator. */, screenShareStarted: "didScreenSharedStarted" /* Event called when screen share started. */, sceenShareStopped: "didScreenShareStopped" /* Event called when screen share stopped. */, canvasStarted: "didCanvasStarted" /* Event called when screen canvas stopped. */, canvasStopped: "didCanvasStopped" /* Event called when screen canvas stopped. */, floorRequested: "didFloorRequested" /* Event for participant on the success of requestFloor. This is for participant only. */, processFloorRequested: "didProcessFloorRequested" /* Event for Moderator on performing actions like grantFloor, denyFloor, releaseFloor. */, floorRequestReceived: "didFloorRequestReceived" /* Event for Moderatoron any Floor Request raised by the participant. This is for Moderator only. */, grantFloorRequested: "didGrantedFloorRequest" /* Event for Participant when the moderator performs action grantFloor. */, denyFloorRequested: "didDeniedFloorRequest" /* Event for Participant when the moderator performs action denyFloor. */, releaseFloorRequested: "didReleasedFloorRequest" /* Event for Participant when the moderator performs action releaseFloor. */, ackInviteToFloorRequested:"didACKInviteToFloorRequested", inviteToFloorRequested:"didInviteToFloorRequested", invitedForFloorAccess:"didInvitedForFloorAccess", canceledFloorInvite:"didCanceledFloorInvite", rejectedInviteFloor:"didRejectedInviteFloor", acceptedFloorInvite: "didAcceptedFloorInvite", finishedFloorRequest: "didFinishedFloorRequest", //This event will notify to all available moderator, Once any participant has finished there floor request floorFinished: "didFloorFinished", //This ACK event for Participant , When he/she will finished their request floor after request floor accepted by any moderator cancelledFloorRequest: "didCancelledFloorRequest",// This event method will notify to all available moderator, Once any participant has canceled there floor request floorCancelled: "didFloorCancelled",// This ACK event for Participant , When he/she will cancel their request floor mutedAllUser: "didMutedAllUser" /* Event for called when the room is muted by the moderator. Available to Moderator only. */, unmutedAllUser: "didUnMutedAllUser" /* Event for called when the room is unmuted by the moderator. Available to Moderator only. */, hardMutedAll: "didHardMutedAll" /* Event for Participants when room is muted by any moderator. */, hardUnmuteAllUser: "didHardUnMuteAllUser" /* Event for Participants when room is unmuted by any moderator. */, userConnected: "userDidConnected" /* Event when a user is connected to a room, all other connected users are notified about the new user. */, userDisconnected: "userDidDisconnected" /* Event called when a user is disconnected from a room, all other connected users are notified about the users exit. */, logUpload: "didLogUpload" /* Event called when the log is uploaded successfully to the server. */, setTalkerCountResponse: "didSetTalkerCount" /* Event called when the user set number of active talker. */, getMaxTalkersResponse: "didGetMaxTalkers" /* Event to get the maximum number of allowed Active Talkers in the connected room. */, getTalkerCountResponse: "didGetTalkerCount" /* Event called when the user request to get opted active talker streams set by them. */, notifyDeviceUpdate: "didNotifyDeviceUpdate" /* Event Will Notify app user for any Audio media changes happen recently(Like :- New device connected/Doisconnected). */, receivedStats: "didStatsReceive" /* Event Will Notify app user with updated stream stats present in the room. */, acknowledgeStats: "didAcknowledgeStats" /* Event to called on stats enable or disable at room level. */, bandWidthUpdated: "didBandWidthUpdated" /* Event will notify if a significant change in remote streams. */, shareStateEvent: "didShareStreamEvent" /* Event will notify if a significant change in share streams. */, canvasStateEvent: "didCanvasStreamEvent" /* Event will notify if a significant change in canvas streams. */, reconnect: "didReconnect" /* Event will called on reconnect. */, userReconnect: "didUserReconnectSuccess" /* Event will called on reconnect success. */, connectionInterrupted: "didConnectionInterrupted" /* Event will notify if there is an interruption in connection. */, connectionLost: "didConnectionLost" /* Event will notify if the connection has lost. */, advancedOptionsUpdate: "didAdvanceOptionsUpdate" /* Event will notify advance options update. */, getAdvancedOptions: "didGetAdvanceOptions", capturedView: "didCapturedView" /* Event will provide base64 string of captured screen shot image. */, userDataReceived: "didUserDataReceived" /* Event called to receive custom signaling event message at room Level. */, messageReceived: "didMessageReceived", // Event called to receive message at room Level. acknowledgeSendData: "didAcknowledgSendData", // Event called on acknowledge send Data. acknowledgeSwitchUserRole: "didSwitchUserRole", // Event called on acknowledge switch user role. userRoleChanged: "didUserRoleChanged", // Event called on user role change. fileUploaded: "didFileUploaded", // Event called file is upload successfull. fileAvailable: "didFileAvailable", // Event called When File available to download. fileUploadStarted: "didFileUploadStarted", // Event called When any of the user in same room will start sharing file. fileUploadFailed: "didFileUploadFailed", // Event called upload file is failed. initFileUpload: "didInitFileUpload", // Event called When self user will start sharing file. fileDownloaded: "didFileDownloaded", // Event called When download of file success. fileDownloadFailed: "didFileDownloadFailed", // Event called When file download failed. availableFiles: "didAvailableFiles", //Event when file is available initFileDownload: "didInitFileDownload", // To init file Download fileUploadCancelled: "didFileUploadCancelled", // When user canel file upload fileDownloadCancelled: "didFileDownloadCancelled", // when user cancel download file whoAmI: "whoAmI", //To get self connected user details lockedRoom: "didLockRoom", //Event when room is locked unLockedRoom: "didUnlockRoom", //Event when room is unlocked ackUnLockRoom: "didAckLockRoom", //Event on acknowledge room locked for moderator ackLockRoom: "didAckUnlockRoom", //Event on acknowledge room unlocked for moderator outBoundCallInitiated: "didOutBoundCallInitiated", //Event when outbound call initiated dialStateEvents: "didDialStateEvents", // Event to get state of dial events. dialStateWithInfo: "didDialStateWithInfo", dTMFCollected:"didDTMFCollected", //Event to get dtnf collected outBoundCallSendDtmf:"didOutBoundCallSendDtmf", ackDropUser: "didAckDropUser", //Event on acknowledge drop user for moderator ackDestroy: "didAckDestroy", //Event on acknowledge destroy room for moderator getReceiveVideoQuality: "getReceiveVideoQuality", //Event to get receive video quality annotationStarted: "didAnnotationStarted", //Event on annotation started startAnnotationAck: "didStartAnnotationACK", //Event on start annotation acknowledge annotationStopped: "didAnnotationStopped", //Event on annotation stopped stoppedAnnotationAck: "didStoppedAnnotationACK", //Event on stopped annotation acknowledge getRole: "getRole", //Event to get user self role(participant or moderator) getClientId: "getClientId", //Event to get user self clientId getRoomId: "getRoomId", //Event to get roomId if client is connected getClientName: "clientName", //Event to get self clientName isRoomActiveTalker: "isRoomActiveTalker", // Event to get room is available with activeTalker event or not getUserList: "getUserList", //Event to get all available users in room conferencessExtended: "didConferencessExtended", // Event on extend room duration conferenceRemainingDuration: "didConferenceRemainingDuration", getRoomMetadata: "getRoomMetadata", // Event to get room metaData roomBandwidthAlert :"didRoomBandwidthAlert", ackPinUsers: "didAckPinUsers", ackUnPinUser: "didAckUnpinUsers", pinnedUsers: "didPinnedUsers", //knock-knock roomAwaited :"didRoomAwated", ackForApproveAwaitedUser: "didAckForApproveAwaitedUser", ackForDenyAwaitedUser: "didAckForDenyAwaitedUser", userAwaited: "diduserAwaited", // // for Talker Notification ackSubscribeTalkerNotification:"didAckSubscribeTalkerNotification", ackUnsubscribeTalkerNotification:"didAckUnsubscribeTalkerNotification", talkerNotification:"didTalkerNotification", //Break out Room ackCreateBreakOutRoom:"didAckCreateBreakOutRoom", ackCreateAndInviteBreakOutRoom:"didAckCreateAndInviteBreakOutRoom", ackInviteBreakOutRoom:"didAckInviteBreakOutRoom", ackPause:"didAckPause", ackResume:"didAckResume", ackMuteRoom:"didAckMuteRoom", ackUnmuteRoom:"didAckUnmuteRoom", failedJoinBreakOutRoom:"didFailedJoinBreakOutRoom", connectedBreakoutRoom:"didConnectedBreakoutRoom", disconnectedBreakoutRoom:"didDisconnectedBreakoutRoom", userJoinedBreakoutRoom:"didUserJoinedBreakoutRoom", invitationForBreakoutRoom:"didInvitationForBreakoutRoom", destroyedBreakoutRoom:"didDestroyedBreakoutRoom", userDisconnectedFromBreakoutRoom:"didUserDisconnectedFromBreakoutRoom", ackRejectBreakoutRoom: "didAckRejectBreakoutRoom", breakoutRoomCreated: "didBreakoutRoomCreated", breakoutRoomInvited: "didBreakoutRoomInvited", breakoutRoomInviteRejected: "didBreakoutRoomInviteRejected", // Pre call Test clientDiagnosisFailed:"didClientDiagnosisFailed", clientDiagnosisStopped:"didClientDiagnosisStopped", clientDiagnosisFinished:"didClientDiagnosisFinished", clientDiagnosisStatus:"didClientDiagnosisStatus", //Spotlight User ackAddSpotlightUsers: "didAckAddSpotlightUsers", ackRemoveSpotlightUsers: "didAckRemoveSpotlightUsers", updateSpotlightUsers: "didUpdatedSpotlightUsers", //Switch Room ackSwitchedRoom: "didAckSwitchedRoom", roomModeSwitched: "didRoomModeSwitched", // Live Recording aCKStartLiveRecording: "didACKStartLiveRecording", aCKStopLiveRecording: "didACKStopLiveRecording", liveRecordingNotification: "didLiveRecordingNotification", roomliverecordOn: "didRoomliverecordOn", //Live Streaming ackStartStreaming: "didAckStartStreaming", ackStopStreaming: "didAckStopStreaming", streamingStarted: "didStreamingStarted", streamingStopped: "didStreamingStopped", streamingFailed :"didStreamingFailed", streamingUpdated:"didStreamingUpdated", // Cancel Out Bound Call dTMFCollected: "didDTMFCollected", outBoundCallCancel: "didOutBoundCallCancel", //Override Single Mute/Unmute Audio (using roomInstance instead of stream) ackHardMuteUserAudio: "didAckHardMuteUserAudio", ackHardunMuteUserAudio: "didAckHardunMuteUserAudio", //Override Single Mute/Unmute Video (using roomInstance instead of stream) ackHardMuteUserVideo: "didAckHardMuteUserVideo", ackHardUnMuteUserVideo: "didAckHardUnMuteUserVideo", stopAllSharingACK: "didStopAllSharingACK", breakoutroomjoining: "didBreakoutroomjoining", userPaused: "didUserPaused", userResumed: "didUserResumed", // Bandwidth Alert bandWidthUpdated: "didBandWidthUpdated", roomBandWidthAlert: "didRoomBandWidthAlert", //Speech to text(Livetranscriptions) ackSubscribeForLiveTranscription: "didACKSubscribeForLiveTranscription", ackStartLiveTranscription: "didACKStartLiveTranscription", ackStopLiveTranscription: "didACKStopLiveTranscription", transcriptionEvents: "didTranscriptionEvents", roomTranscriptionOn: "didRoomTranscriptionOn", roomTranscriptionOff: "didRoomTranscriptionOff", selfTranscriptionOn: "didSelfTranscriptionOn", selfTranscriptionOff: "didSelfTranscriptionOff", //Share Privacy sharePermissionsModeChanged :"didSharePermissionsModeChanged", ackSetSharePermissionMode : "didACKSetSharePermissionMode", ackGrantSharePermission : "didACKGrantSharePermission", ackDenySharePermission: "didACKDenySharePermission", ackReleaseSharePermission: "didACKReleaseSharePermission", ackRequestSharePermission: "didACKRequestSharePermission", ackCancelSharePermission: "didACKCancelSharePermission", sharePermissionRequested: "didSharePermissionRequested", sharePermissionReleased:"didSharePermissionReleased", sharePermissionDeny: "didSharePermissionDeny", sharePermissionCanceled:"didSharePermissionCancled", sharePermissionGranted: "didSharePermissionGranted" , //HLS hlsStarted:"didHlsStarted", hlsStopped: "didHlsStopped", hlsFailed:"didHlsFailed", hlsWaiting: "diHlsWaiting" , //Data Storage ackCustomDataUpdated: "didACKCustomDataUpdated", customDataUpdated:"didCustomDataUpdated", getCustomData: "didGetCustomData", customDataSaved:"didCustomDataSaved" }, android: { roomConnected: "onRoomConnected", roomError: "onRoomError", eventError: "onEventError", roomDisconnected: "onRoomDisConnected", streamPublished: "onPublishedStream", streamAdded: "onStreamAdded", streamSubscribed: "onSubscribedStream", activeTalkerList: "onActiveTalkerList", roomRecordingOn: "onRoomRecordingOn", roomRecordingOff: "onRoomRecordingOff", startRecordingEvent: "onStartRecordingEvent", stopRecordingEvent: "onStopRecordingEvent", screenShareStarted: "onScreenSharedStarted", sceenShareStopped: "onScreenSharedStopped", startScreenShareACK: "onStartScreenShareACK", stoppedScreenShareACK: "onStoppedScreenShareACK", canvasStarted: "onCanvasStarted", canvasStopped: "onCanvasStopped", floorRequested: "onFloorRequested", processFloorRequested: "onProcessFloorRequested", floorRequestReceived: "onFloorRequestReceived", grantFloorRequested: "onGrantedFloorRequest", denyFloorRequested: "onDeniedFloorRequest", releaseFloorRequested: "onReleasedFloorRequest", mutedAllUser: "onHardMuted", unmutedAllUser: "onHardUnMuted", hardMutedAll: "onReceivedHardMute", hardUnmuteAllUser: "onReceivedHardUnMute", userConnected: "onUserConnected", userDisconnected: "onUserDisConnected", logUpload: "onLogUploaded", setTalkerCountResponse: "onSetTalkerCount", getMaxTalkersResponse: "onMaxTalkerCount", getTalkerCountResponse: "onGetTalkerCount", notifyDeviceUpdate: "onNotifyDeviceUpdate", receivedStats: "onReceivedStats", acknowledgeStats: "onAcknowledgeStats", bandWidthUpdated: "onBandWidthUpdated", shareStateEvent: "onShareStreamEvent", canvasStateEvent: "onCanvasStreamEvent", reconnect: "onReconnect", userReconnect: "onUserReconnectSuccess", connectionInterrupted: "onConnectionInterrupted", connectionLost: "onConnectionLost", capturedView: "OnCapturedView", getAdvancedOptions: "onGetAdvancedOptions", advancedOptionsUpdate: "onAdvancedOptionsUpdate", userDataReceived: "onUserDataReceived", messageReceived: "onMessageReceived", acknowledgeSendData: "onAcknowledgedSendData", acknowledgeSwitchUserRole: "onSwitchedUserRole", userRoleChanged: "onUserRoleChanged", fileUploadStarted: "onFileUploadStarted", initFileUpload: "onInitFileUpload", fileAvailable: "onFileAvailable", fileUploaded: "onFileUploaded", fileUploadFailed: "onFileUploadFailed", fileDownloaded: "onFileDownloaded", fileDownloadFailed: "onFileDownloadFailed", availableFiles: "getAvailableFiles", initFileDownload: "onInitFileDownload", fileUploadCancelled: "onFileUploadCancelled", fileDownloadCancelled: "onFileDownloadCancelled", lockedRoom: "onLockedRoom", unLockedRoom: "onUnLockedRoom", ackUnLockRoom: "onAckUnLockRoom", ackLockRoom: "onAckLockRoom", outBoundCallInitiated: "onOutBoundCallInitiated", dialStateEvents: "onDialStateEvents", dialStateWithInfo: "onDialStateWithInfo", outBoundCallSendDtmf:"onOutBoundCallSendDtmf", conferencessExtended: "onConferencessExtended", conferenceRemainingDuration: "onConferenceRemainingDuration", ackDropUser: "onAckDropUser", ackDestroy: "onAckDestroy", annotationStarted: "onAnnotationStarted", startAnnotationAck: "onStartAnnotationAck", annotationStopped: "onAnnotationStopped", stoppedAnnotationAck: "onStoppedAnnotationAck", finishedFloorRequest: "onFinishedFloorRequest", //This event will notify to all available moderator, Once any participant has finished there floor request floorFinished: "onFloorFinished", //This ACK event for Participant , When he/she will finished their request floor after request floor accepted by any moderator cancelledFloorRequest: "onCancelledFloorRequest",// This event method will notify to all available moderator, Once any participant has canceled there floor request floorCancelled: "onFloorCancelled",// This ACK event for Participant , When he/she will cancel their request floor ackInviteToFloorRequested:"onACKInviteToFloorRequested", inviteToFloorRequested:"onInviteToFloorRequested", invitedForFloorAccess:"onInvitedForFloorAccess", canceledFloorInvite:"onCanceledFloorInvite", rejectedInviteFloor:"onRejectedInviteFloor", acceptedFloorInvite:"onAcceptedFloorInvite", //pin and upin ackPinUsers: "onAckPinUsers", ackUnPinUser: "onAckUnpinUsers", pinnedUsers: "onPinnedUsers", //knock -knock roomAwaited:"onRoomAwaited", userAwaited:"onUserAwaited", ackForApproveAwaitedUser:"onAckForApproveAwaitedUser", ackForDenyAwaitedUser:"onAckForDenyAwaitedUser", roomBandwidthAlert :"onRoomBandwidthAlert", // for Talker Notification ackSubscribeTalkerNotification:"onAckSubscribeTalkerNotification", ackUnsubscribeTalkerNotification:"onAckUnsubscribeTalkerNotification", talkerNotification:"onTalkerNtification", //Break out Room ackCreateBreakOutRoom:"onAckCreateBreakOutRoom", ackCreateAndInviteBreakOutRoom:"onAckCreateAndInviteBreakOutRoom", ackInviteBreakOutRoom:"onAckInviteBreakOutRoom", ackPause:"onAckPause", ackResume:"onAckResume", ackMuteRoom:"onAckMuteRoom", ackUnmuteRoom:"onAckUnmuteRoom", failedJoinBreakOutRoom:"onFailedJoinBreakOutRoom", connectedBreakoutRoom:"onConnectedBreakoutRoom", disconnectedBreakoutRoom:"onDisconnectedBreakoutRoom", userJoinedBreakoutRoom:"onUserJoinedBreakoutRoom", invitationForBreakoutRoom:"onInvitationForBreakoutRoom", destroyedBreakoutRoom:"onDestroyedBreakoutRoom", userDisconnectedFromBreakoutRoom:"onUserDisconnectedFromBreakoutRoom", ackRejectBreakOutRoom:"onAckRejectBreakOutRoom", breakoutRoomCreated:"onBreakoutRoomCreated", breakoutRoomInvited:"onBreakoutRoomInvited", breakoutRoomInviteRejected:"onBreakoutRoomInviteRejected", // Pre call Test clientDiagnosisFailed:"onClientDiagnosisFailed", clientDiagnosisStopped:"onClientDiagnosisStopped", clientDiagnosisFinished:"onClientDiagnosisFinished", clientDiagnosisStatus:"onClientDiagnosisStatus", //Spotlight User ackAddSpotlightUsers: "onAckAddSpotlightUsers", ackRemoveSpotlightUsers: "onAckRemoveSpotlightUsers", updateSpotlightUsers: "onUpdateSpotlightUsers", //Switch Room ackSwitchedRoom: "onAckSwitchedRoom", roomModeSwitched: "onRoomModeSwitched", // Live Recording aCKStartLiveRecording: "onACKStartLiveRecording", aCKStopLiveRecording: "onACKStopLiveRecording", liveRecordingNotification: "onLiveRecordingNotification", roomliverecordOn: "onRoomliverecordOn", //Live Streaming ackStartStreaming: "onAckStartStreaming", ackStopStreaming: "onAckStopStreaming", streamingStarted: "onStreamingStarted", streamingStopped: "onStreamingStopped", streamingFailed :"onStreamingFailed", streamingUpdated:"onStreamingUpdated", // Cancel Out Bound Call dTMFCollected: "onDTMFCollected", outBoundCallCancel: "onOutBoundCallCancel", //Override Single Mute/Unmute Audio (using roomInstance instead of stream) ackHardMuteUserAudio: "onAckHardMuteUserAudio", ackHardunMuteUserAudio: "onAckHardunMuteUserAudio", //Override Single Mute/Unmute Video (using roomInstance instead of stream) ackHardMuteUserVideo: "onAckHardMuteUserVideo", ackHardUnMuteUserVideo: "onAckHardUnMuteUserVideo", stopAllSharingACK: "onStopAllSharingACK", breakoutroomjoining: "onBreakoutroomjoining", userPaused: "onUserPaused", userResumed: "onUserResumed", // Bandwidth Alert bandWidthUpdated: "onBandWidthUpdated", roomBandwidthAlert: "onRoomBandwidthAlert", //Speech to text(Livetranscriptions) //Speech to text(Livetranscriptions) ackSubscribeForLiveTranscription: "onACKSubscribeForLiveTranscription", ackStartLiveTranscription: "onACKStartLiveTranscription", ackStopLiveTranscription: "onACKStopLiveTranscription", transcriptionEvents: "onTranscriptionEvents", roomTranscriptionOn: "onRoomTranscriptionOn", roomTranscriptionOff: "onRoomTranscriptionOff", selfTranscriptionOn: "onSelfTranscriptionOn", selfTranscriptionOff: "onSelfTranscriptionOff", //Share Privacy sharePermissionsModeChanged :"onSharePermissionsModeChanged", ackSetSharePermissionMode : "onACKSetSharePermissionMode", ackGrantSharePermission : "onACKGrantSharePermission", ackDenySharePermission: "onACKDenySharePermission", ackReleaseSharePermission: "onACKReleaseSharePermission", ackRequestSharePermission: "onACKRequestSharePermission", ackCancelSharePermission: "onACKCancelSharePermission", sharePermissionRequested: "onSharePermissionRequested", sharePermissionReleased:"onSharePermissionReleased", sharePermissionDeny: "onSharePermissionDeny", sharePermissionCanceled:"onSharePermissionCanceled", sharePermissionGranted: "onSharePermissionGranted" , //HLS hlsStarted:"onHlsStarted", hlsStopped: "onHlsStopped", hlsFailed:"onHlsFailed", hlsWaiting: "onHlsWaiting" , //Data Storage ackCustomDataUpdated: "onACKCustomDataUpdated", customDataUpdated:"onCustomDataUpdated", getCustomData: "onGetCustomData", customDataSaved:"onCustomDataSaved" }, }; return reassignEvents("room", customEvents, events); } catch (error) { console.log("sanitizeRoomEventsError", error); } }; const sanitizeLocalInfoData = (localInfo) => { if (typeof localInfo !== "object") { return { audio: true, video: true, data: true, maxVideoBW: "", minVideoBW: "", audioMuted: false, videoMuted: false, audio_only: false, name: "", minWidth: "", minHeight: "", maxWidth: "", maxHeight: "", }; } return { audio: validateBoolean(localInfo.audio), video: validateBoolean(localInfo.video), data: validateBoolean(localInfo.data), maxVideoBW: validateString(localInfo.maxVideoBW), minVideoBW: validateString(localInfo.minVideoBW), audioMuted: validateBoolean(localInfo.audioMuted), videoMuted: validateBoolean(localInfo.videoMuted), audio_only : validateBoolean(localInfo.audio_only), name: validateString(localInfo.name), minWidth: validateString(localInfo.minWidth), minHeight: validateString(localInfo.minHeight), maxWidth: validateString(localInfo.maxWidth), maxHeight: validateString(localInfo.maxHeight), }; }; const sanitizeRoomData = (roomInfo) => { if (typeof roomInfo !== "object") { return { allow_reconnect: false, number_of_attempts: 0, timeout_interval: 0, activeviews: "list", playerConfiguration :{ audiomute: true, videomute: true, bandwidth: true, screenshot: true, avatar: true, iconHeight: 30, iconWidth: 30, avatarHeight: 50, avatarWidth: 50, iconColor : "#0000FF", } }; } return { allow_reconnect: validateBoolean(roomInfo.allow_reconnect), number_of_attempts: validateInt(roomInfo.number_of_attempts), timeout_interval: validateInt(roomInfo.timeout_interval), activeviews: "list", playerConfiguration :{ audiomute: validateBoolean(roomInfo.playerConfiguration.audioMuted), videomute: validateBoolean(roomInfo.playerConfiguration.videoMuted), bandwidth: validateBoolean(roomInfo.playerConfiguration.bandwidth), screenshot: validateBoolean(roomInfo.playerConfiguration.screenshot), avatar: validateBoolean(roomInfo.playerConfiguration.avatar), iconColor : validateString(roomInfo.playerConfiguration.iconColor), } }; }; const sanitizeAdvanceOptions = (advanceOptionsInfo) => { if (typeof advanceOptionsInfo !== "object") { return [ { battery_updates: false }, { notify_video_resolution_change: false }, ]; } return [ { battery_updates: validateBoolean(advanceOptionsInfo.battery_updates) }, { notify_video_resolution_change: validateBoolean( advanceOptionsInfo.notify_video_resolution_change ), }, ]; }; const validateString = (value) => (isString(value) ? value : ""); const validateBoolean = (value) => (isBoolean(value) ? value : false); const validateInt = (value) => (Number.isInteger(value) ? value : 0); const sanitizeBooleanProperty = (property) => property || property === undefined ? true : property; export { sanitizeRoomEvents, sanitizeLocalInfoData, sanitizeBooleanProperty, sanitizeRoomData, sanitizeAdvanceOptions, };