UNPKG

podchat-browser

Version:

Javascript SDK to use POD's Chat Service - Browser Only

1,290 lines (1,073 loc) 117 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof3 = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _objectDestructuringEmpty2 = _interopRequireDefault(require("@babel/runtime/helpers/objectDestructuringEmpty")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _constants = require("./lib/constants"); var _utility = _interopRequireDefault(require("./utility/utility")); var _errorHandler = _interopRequireWildcard(require("./lib/errorHandler")); var _callsList = _interopRequireDefault(require("./lib/call/callsList")); var _deviceManager = require("./lib/call/deviceManager"); var _call = _interopRequireDefault(require("./lib/call/call")); var _callServerManager = _interopRequireDefault(require("./lib/call/callServerManager")); var _inquiryCallParticipants = _interopRequireDefault(require("./lib/chat/call/inquiryCallParticipants")); var _adminMethods = _interopRequireDefault(require("./lib/chat/call/adminMethods")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof3(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } function ChatCall(app, params) { var _app$sdkParams$callOp, _app$sdkParams$callOp2; app.call = new _call["default"](app); app.callsManager = new _callsList["default"](app); var inquiryCallModule = new _inquiryCallParticipants["default"](app); app.call.inquiryCallParticipants = inquiryCallModule; app.call.deviceManager = new _deviceManager.DeviceManager(app); app.call.adminMethods = new _adminMethods["default"](app); var callServerController = new _callServerManager["default"](app); var //Utility = params.Utility, currentModuleInstance = this, //app.chatEvents = params.app.chatEvents, callRequestController = { imCallOwner: false, callRequestReceived: false, callEstablishedInMySide: false, callRequestTimeout: null, iRequestedCall: false, iAcceptedCall: false, canProcessStartCall: function canProcessStartCall(callId) { app.sdkParams.consoleLogging && console.log("[SDK] canProcessStartCall:", { callId: callId }, { acceptedCallId: app.call.sharedVariables.acceptedCallId }, callRequestController.iAcceptedCall, callRequestController.iAcceptedCall && app.call.sharedVariables.acceptedCallId == callId); if (callRequestController.iAcceptedCall && app.call.sharedVariables.acceptedCallId == callId || callRequestController.iRequestedCall && app.call.sharedVariables.requestedCallId == callId) return true; return false; } }, // generalTypeCode = params.typeCode, // currentCallParams = {}, latestCallRequestId = null, screenShareInfo = new screenShareStateManager(app), //shouldReconnectCallTimeout = null, // screenShareState = { // started: false, // imOwner: false // }, callUsers = {}, //callServerManager(), //callTopicHealthChecker = new peersHealthChecker(), //messageTtl = params.messageTtl || 10000, callOptions = app.sdkParams.callOptions, config = { getHistoryCount: 25 }; app.call.sharedVariables.useInternalTurnAddress = !!(callOptions && callOptions.useInternalTurnAddress); app.call.sharedVariables.useCustomTurnAddress = !!(callOptions && callOptions.useCustomTurnAddress); app.call.sharedVariables.callTurnIp = callOptions && callOptions.callTurnIp ? callOptions.callTurnIp : ""; app.call.sharedVariables.globalCallRequestTimeout = app.sdkParams.callRequestTimeout; app.call.sharedVariables.callDivId = callOptions && callOptions.hasOwnProperty('callDivId') && typeof callOptions.callDivId === 'string' ? callOptions.callDivId : 'call-div'; app.call.sharedVariables.callAudioTagClassName = callOptions && callOptions.hasOwnProperty('callAudioTagClassName') && typeof callOptions.callAudioTagClassName === 'string' ? callOptions.callAudioTagClassName : ''; app.call.sharedVariables.callVideoTagClassName = callOptions && callOptions.hasOwnProperty('callVideoTagClassName') && typeof callOptions.callVideoTagClassName === 'string' ? callOptions.callVideoTagClassName : ''; app.call.sharedVariables.callVideoMinWidth = callOptions && callOptions.hasOwnProperty('callVideo') && (0, _typeof2["default"])(callOptions.callVideo) === 'object' && callOptions.callVideo.hasOwnProperty('minWidth') ? callOptions.callVideo.minWidth : 320; app.call.sharedVariables.callVideoMinHeight = callOptions && callOptions.hasOwnProperty('callVideo') && (0, _typeof2["default"])(callOptions.callVideo) === 'object' && callOptions.callVideo.hasOwnProperty('minHeight') ? callOptions.callVideo.minHeight : 180; app.call.sharedVariables.callNoAnswerTimeout = ((_app$sdkParams$callOp = app.sdkParams.callOptions) === null || _app$sdkParams$callOp === void 0 ? void 0 : _app$sdkParams$callOp.callNoAnswerTimeout) || 0; app.call.sharedVariables.callStreamCloseTimeout = ((_app$sdkParams$callOp2 = app.sdkParams.callOptions) === null || _app$sdkParams$callOp2 === void 0 ? void 0 : _app$sdkParams$callOp2.streamCloseTimeout) || 10000; function screenShareStateManager(app) { var config = { ownerId: 0, imOwner: false, isStarted: false, width: app.call.sharedVariables.callVideoMinWidth, height: app.call.sharedVariables.callVideoMinHeight }; return { setOwner: function setOwner(ownerId) { config.ownerId = +ownerId; }, setIsStarted: function setIsStarted(isStarted) { config.isStarted = isStarted; }, isStarted: function isStarted() { return config.isStarted; }, iAmOwner: function iAmOwner() { return config.ownerId === app.store.user.get().id; }, setWidth: function setWidth(width) { config.width = width; }, setHeight: function setHeight(height) { config.height = height; }, getWidth: function getWidth(width) { return config.width; }, getHeight: function getHeight(height) { return config.height; }, getOwner: function getOwner() { return config.ownerId; }, setDimension: function setDimension(dimension) { if (dimension && dimension.width && +dimension.width > 0 && dimension.height && +dimension.height > 0) { screenShareInfo.setHeight(dimension.height); screenShareInfo.setWidth(dimension.width); } else { screenShareInfo.setHeight(app.call.sharedVariables.callVideoMinHeight); screenShareInfo.setWidth(app.call.sharedVariables.callVideoMinWidth); } } }; } function callServerManager() { var config = { servers: [], currentServerIndex: 0 }; return { setServers: function setServers(serversList) { config.servers = serversList; config.currentServerIndex = 0; }, getCurrentServer: function getCurrentServer() { return config.servers[0]; //config.currentServerIndex]; }, isJanus: function isJanus() { return config.servers[config.currentServerIndex].toLowerCase().substr(0, 1) === 'j'; }, canChangeServer: function canChangeServer() { return config.currentServerIndex < config.servers.length - 1; }, changeServer: function changeServer() { if (this.canChangeServer()) { app.sdkParams.consoleLogging && console.debug('[SDK][changeServer] Changing kurento server...'); config.currentServerIndex++; } } }; } var init = function init() {}, raiseCallError = function raiseCallError(errorObject, callBack, fireEvent) { var _app$call$currentCall; app.errorHandler.raiseError(errorObject, callBack, fireEvent, { eventName: 'callEvents', eventType: 'CALL_ERROR', environmentDetails: (_app$call$currentCall = app.call.currentCall()) === null || _app$call$currentCall === void 0 ? void 0 : _app$call$currentCall.getCallDetails() }); }, sendCallMessage = function sendCallMessage(message, callback, _ref) { var _ref$timeoutTime = _ref.timeoutTime, timeoutTime = _ref$timeoutTime === void 0 ? 0 : _ref$timeoutTime, _ref$timeoutRetriesCo = _ref.timeoutRetriesCount, timeoutRetriesCount = _ref$timeoutRetriesCo === void 0 ? 0 : _ref$timeoutRetriesCo; message.token = app.sdkParams.token; var uniqueId; if (!message.uniqueId) { message.uniqueId = _utility["default"].generateUUID(); } // message.uniqueId = uniqueId; message.chatId = app.callsManager.currentCallId(); var data = { type: 3, content: { peerName: callServerController.getCurrentServer(), // callServerName, priority: 1, content: JSON.stringify(message), ttl: app.sdkParams.messageTtl } }; if (typeof callback == 'function') { app.store.messagesCallbacks[message.uniqueId] = callback; } app.call.sharedVariables.asyncClient.send(data, function (res) { if (!res.hasError && callback) {// if (typeof callback == 'function') { // callback(res); // } // if (app.store.messagesCallbacks[uniqueId]) { // delete app.store.messagesCallbacks[uniqueId]; // } } }); if (timeoutTime || app.call.sharedVariables.globalCallRequestTimeout > 0) { app.store.asyncRequestTimeouts[message.uniqueId] && clearTimeout(app.store.asyncRequestTimeouts[message.uniqueId]); app.store.asyncRequestTimeouts[message.uniqueId] = setTimeout(function () { if (app.store.messagesCallbacks[message.uniqueId]) { delete app.store.messagesCallbacks[message.uniqueId]; } if (timeoutRetriesCount) { app.sdkParams.consoleLogging && console.log("[SDK][sendCallMessage] Retrying call request. uniqueId :" + message.uniqueId, { message: message }); //timeoutCallback(); sendCallMessage(message, callback, { timeoutTime: timeoutTime, timeoutRetriesCount: timeoutRetriesCount - 1 }); } else if (typeof callback == 'function') { /** * Request failed */ callback({ done: 'SKIP' }); } /* if (app.store.messagesCallbacks[uniqueId]) { delete app.store.messagesCallbacks[uniqueId]; }*/ }, timeoutTime || app.call.sharedVariables.globalCallRequestTimeout); } }, /** * Format Data To Make Call Participant * * This functions reformats given JSON to proper Object * * @access private * * @param {object} messageContent Json object of thread taken from chat server * * @param threadId * @return {object} participant Object */ formatDataToMakeCallParticipant = function formatDataToMakeCallParticipant(messageContent) { /** * + CallParticipantVO {object} * - id {int} * - joinTime {int} * - leaveTime {int} * - threadParticipant {object} * - sendTopic {string} * - receiveTopic {string} * - brokerAddress {string} * - active {boolean} * - callSession {object} * - callStatus {int} * - createTime {int} * - sendKey {string} * - mute {boolean} * - roleType {int} * - allowedCallCations {object} */ var participant = { id: messageContent.id, joinTime: messageContent.joinTime, leaveTime: messageContent.leaveTime, sendTopic: messageContent.sendTopic, receiveTopic: messageContent.receiveTopic, brokerAddress: messageContent.brokerAddress, active: messageContent.active, callSession: messageContent.callSession, callStatus: messageContent.callStatus, createTime: messageContent.createTime, sendKey: messageContent.sendKey, mute: messageContent.mute, video: messageContent.video, raiseHand: messageContent.raiseHand, roleType: messageContent.roleType, allowedCallCations: messageContent.allowedCallCations }; // Add Chat Participant if exist if (messageContent.participantVO) { participant.participantVO = messageContent.participantVO; } // Add Call Session if exist if (messageContent.callSession) { participant.callSession = messageContent.callSession; } // return participant; return JSON.parse(JSON.stringify(participant)); }, /** * Format Data To Make Call Message * * This functions reformats given JSON to proper Object * * @access private * * @param {object} messageContent Json object of thread taken from chat server * * @return {object} Call message Object */ formatDataToMakeCallMessage = function formatDataToMakeCallMessage(threadId, pushMessageVO) { /** * + CallVO {object} * - id {int} * - creatorId {int} * - type {int} * - createTime {string} * - startTime {string} * - endTime {string} * - status {int} * - isGroup {boolean} * - callParticipants {object} * - partnerParticipantVO {object} * - conversationVO {object} */ var callMessage = { id: pushMessageVO.id, creatorId: pushMessageVO.creatorId, type: pushMessageVO.type, createTime: pushMessageVO.createTime, startTime: pushMessageVO.startTime, endTime: pushMessageVO.endTime, status: pushMessageVO.status, isGroup: pushMessageVO.isGroup, callParticipants: pushMessageVO.callParticipants, partnerParticipantVO: pushMessageVO.partnerParticipantVO, conversationVO: pushMessageVO.conversationVO }; // return pinMessage; return JSON.parse(JSON.stringify(callMessage)); }, /** * Reformat Call Participants * * This functions reformats given Array of call Participants * into proper call participant * * @access private * * @param {object} participantsContent Array of Call Participant Objects * @param {int} threadId Id of call * * @return {object} Formatted Call Participant Array */ reformatCallParticipants = function reformatCallParticipants(participantsContent) { var returnData = []; for (var i = 0; i < participantsContent.length; i++) { returnData.push(formatDataToMakeCallParticipant(participantsContent[i])); } return returnData; }, callReceived = function callReceived(params, callback) { var receiveCallData = { chatMessageVOType: _constants.chatMessageVOTypes.RECEIVE_CALL_REQUEST, typeCode: params.typeCode, //params.typeCode, pushMsgType: 3, token: app.sdkParams.token }; if (params) { if (typeof +params.callId === 'number' && params.callId > 0) { receiveCallData.subjectId = +params.callId; } else { // app.errorHandler.raiseError(errorList.INVALID_CALLID, callback, true, {}); app.errorHandler.raiseError(app.errorHandler.getFilledErrorObject(_objectSpread(_objectSpread({}, _errorHandler.errorList.INVALID_CALLID), {}, { replacements: ['callReceived'] })), callback, true, {}); /* app.chatEvents.fireEvent('error', { code: 999, message: 'Invalid call id!' }); */ return; } } else { app.chatEvents.fireEvent('error', { code: 999, message: '[SDK] No params have been sent to ReceiveCall()' }); return; } return app.messenger.sendMessage(receiveCallData, { onResult: function onResult(result) { callback && callback(result); } }); }, sendCallMetaData = function sendCallMetaData(params) { var message = { id: params.id, userid: params.userid, content: params.content || undefined }; sendCallMessage({ id: 'SENDMETADATA', message: JSON.stringify(message), chatId: app.callsManager.currentCallId() }, null, {}); }; this.callMessageHandler = function (callMessage) { var jsonMessage = typeof callMessage.content === 'string' && _utility["default"].isValidJson(callMessage.content) ? JSON.parse(callMessage.content) : callMessage.content; if (jsonMessage.chatId) { app.callsManager.routeCallMessage(jsonMessage.chatId, jsonMessage); } else { app.sdkParams.consoleLogging && console.warn("[SDK] Skipping call message, no chatId is available. ", { jsonMessage: jsonMessage }); } }; this.asyncInitialized = function (async) { app.call.sharedVariables.asyncClient = async; app.call.sharedVariables.asyncClient.on('asyncReady', function () { // callStateController.maybeReconnectAllTopics(); if (app.callsManager.currentCallId()) { app.callsManager.get(app.callsManager.currentCallId()).onChatConnectionReconnect(); } }); }; /** * Do not process the message if is not for current call * * @param type * @param threadId * @return {boolean} */ function shouldNotProcessChatMessage(type, threadId) { var restrictedMessageTypes = [_constants.chatMessageVOTypes.MUTE_CALL_PARTICIPANT, _constants.chatMessageVOTypes.UNMUTE_CALL_PARTICIPANT, _constants.chatMessageVOTypes.CALL_PARTICIPANT_JOINED, _constants.chatMessageVOTypes.REMOVE_CALL_PARTICIPANT, _constants.chatMessageVOTypes.RECONNECT, _constants.chatMessageVOTypes.TURN_OFF_VIDEO_CALL, _constants.chatMessageVOTypes.TURN_ON_VIDEO_CALL, _constants.chatMessageVOTypes.DESTINED_RECORD_CALL, _constants.chatMessageVOTypes.RECORD_CALL, _constants.chatMessageVOTypes.RECORD_CALL_STARTED, _constants.chatMessageVOTypes.END_RECORD_CALL, _constants.chatMessageVOTypes.TERMINATE_CALL, _constants.chatMessageVOTypes.CALL_STICKER_SYSTEM_MESSAGE, _constants.chatMessageVOTypes.CALL_RECORDING_FAILED, _constants.chatMessageVOTypes.RAISE_HAND, _constants.chatMessageVOTypes.LOWER_HAND, _constants.chatMessageVOTypes.SWITCH_TO_GROUP_CALL_REQUEST // chatMessageVOTypes.END_CALL ]; if ((!app.call.callStopQueue.callStarted || threadId != app.callsManager.currentCallId()) && restrictedMessageTypes.includes(type)) { return true; } else { return false; } } this.handleChatMessages = function (chatMessage, type, messageContent, contentCount, threadId, uniqueId) { var _app$callsManager$get, _app$callsManager$get2; app.sdkParams.consoleLogging && console.debug("[SDK][CALL_MODULE][handleChatMessages]", "type:", type, "threadId:", threadId, "currentCallId:", app.callsManager.currentCallId(), "latestCallRequestId:", latestCallRequestId, "shouldNotProcessChatMessage:", shouldNotProcessChatMessage(type, threadId)); if (shouldNotProcessChatMessage(type, threadId)) { return; } switch (type) { /** * Type 70 Send Call Request */ case _constants.chatMessageVOTypes.CALL_REQUEST: // callRequestController.callRequestReceived = true; callReceived({ callId: messageContent.callId }, function (r) {}); if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } // messageContent.callId = threadId; app.chatEvents.fireEvent('callEvents', { type: 'RECEIVE_CALL', result: messageContent, uniqueId: uniqueId }); if (messageContent.callId > 0) { // if(!currentCallId ) { latestCallRequestId = messageContent.callId; // } } else { app.chatEvents.fireEvent('callEvents', { type: 'PARTNER_RECEIVED_YOUR_CALL', result: messageContent, uniqueId: uniqueId }); } break; /** * Type 71 Accept Call Request */ case _constants.chatMessageVOTypes.ACCEPT_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'ACCEPT_CALL', result: messageContent, uniqueId: uniqueId }); break; /** * Type 72 Reject Call Request */ case _constants.chatMessageVOTypes.REJECT_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } messageContent.callId = threadId; app.chatEvents.fireEvent('callEvents', { type: 'REJECT_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 73 Receive Call Request */ case _constants.chatMessageVOTypes.RECEIVE_CALL_REQUEST: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } if (messageContent.callId > 0) { app.chatEvents.fireEvent('callEvents', { type: 'RECEIVE_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); // if(!currentCallId ) { latestCallRequestId = messageContent.callId; // } } else if (callRequestController.iRequestedCall) { app.chatEvents.fireEvent('callEvents', { type: 'PARTNER_RECEIVED_YOUR_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); } break; /** * Type 263 Force Join */ case _constants.chatMessageVOTypes.FORCE_JOIN: /** * Type 74 Start Call (Start sender and receivers) */ case _constants.chatMessageVOTypes.START_CALL: if (!callRequestController.canProcessStartCall(threadId)) { app.chatEvents.fireEvent('callEvents', { type: 'CALL_STARTED_ELSEWHERE', callId: threadId, message: 'Call already started somewhere else..., aborting...', uniqueId: uniqueId }); return; } callRequestController.iRequestedCall = false; callRequestController.iAcceptedCall = false; //app.callsManager.currentCallId = threadId; processChatStartCallEvent(chatMessage, type, messageContent, contentCount, threadId, uniqueId); // if(callsManager().currentCallId) { // endCall({callId: callsManager().currentCallId}); // // callStop( true, false); // setTimeout(()=>{ // callsManager().currentCallId = threadId; // processChatStartCallEvent(type, messageContent, contentCount, threadId, uniqueId); // }, 5000); // } else { // callsManager().currentCallId = threadId; // processChatStartCallEvent(type, messageContent, contentCount, threadId, uniqueId); // } break; /** * Type 75 End Call Request */ case _constants.chatMessageVOTypes.END_CALL_REQUEST: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'END_CALL', result: messageContent, uniqueId: uniqueId }); app.callsManager.removeItem(threadId); // callStop(); break; /** * Type 76 Call Ended */ case _constants.chatMessageVOTypes.END_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'CALL_ENDED', callId: threadId, uniqueId: uniqueId }); if (threadId === app.callsManager.currentCallId() && app.call.callStopQueue.callStarted) { app.callsManager.removeItem(threadId); } break; /** * Type 77 Get Calls History */ case _constants.chatMessageVOTypes.GET_CALLS: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } break; /** * Type 78 Call Partner Reconnecting */ case _constants.chatMessageVOTypes.RECONNECT: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } messageContent.uniqueId = uniqueId; app.chatEvents.fireEvent('callEvents', { type: 'CALL_PARTICIPANT_RECONNECTING', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 79 Call Partner Connects */ case _constants.chatMessageVOTypes.CONNECT: if (!app.callsManager.currentCallId) return; if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'CALL_PARTICIPANT_CONNECTED', callId: threadId, result: messageContent, uniqueId: uniqueId }); if (callUsers && callUsers[app.store.user.get().id] && callUsers[app.store.user.get().id].video) { app.call.currentCall().users().get(app.store.user.get().id).videoTopicManager().restartMediaOnKeyFrame(app.store.user.get().id, [2000, 4000, 8000, 12000]); } // if(callUsers && callUsers['screenShare'] // && screenShareInfo.isStarted() // && screenShareInfo.iAmOwner() // ) { // currentCall().users().get(store.user().id).videoTopicManager().restartMediaOnKeyFrame('screenShare', [2000,4000,8000,12000]); // } break; /** * Type 90 Contacts Synced */ case _constants.chatMessageVOTypes.CONTACT_SYNCED: app.chatEvents.fireEvent('contactEvents', { type: 'CONTACTS_SYNCED', result: messageContent, uniqueId: uniqueId }); break; /** * Type 91 Send Group Call Request */ case _constants.chatMessageVOTypes.GROUP_CALL_REQUEST: // callRequestController.callRequestReceived = true; callReceived({ callId: messageContent.callId }, function (r) {}); if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } if (messageContent.callId > 0) { // if(!currentCallId ) { latestCallRequestId = messageContent.callId; // } } app.chatEvents.fireEvent('callEvents', { type: 'RECEIVE_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); //currentCallId = messageContent.callId; break; /** * Type 92 Call Partner Leave * 1. I have left the call (GroupCall) * 2. Other person has left the call (GroupCall) */ case _constants.chatMessageVOTypes.LEAVE_CALL: var raiseEventToClient = false; if (app.call.currentCall()) { if (app.callsManager.currentCallId() == threadId) { raiseEventToClient = true; } } else if (messageContent && messageContent[0] && messageContent[0].userId && messageContent[0].userId == app.store.user.get().id) { raiseEventToClient = true; } if (raiseEventToClient) { app.chatEvents.fireEvent('callEvents', { type: 'CALL_PARTICIPANT_LEFT', callId: threadId, result: messageContent }); } if (app.callsManager.currentCallId() != threadId) return; (_app$callsManager$get = app.callsManager.get(threadId)) === null || _app$callsManager$get === void 0 ? void 0 : _app$callsManager$get.handleParticipantLeft(messageContent, threadId); break; /** * Type 93 Add Call Participant */ case _constants.chatMessageVOTypes.ADD_CALL_PARTICIPANT: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } break; /** * Type 94 Call Participant Joined */ case _constants.chatMessageVOTypes.CALL_PARTICIPANT_JOINED: if (app.callsManager.currentCallId() != threadId) return; (_app$callsManager$get2 = app.callsManager.get(threadId)) === null || _app$callsManager$get2 === void 0 ? void 0 : _app$callsManager$get2.handleParticipantJoin(messageContent, threadId); break; /** * Type 95 Remove Call Participant */ case _constants.chatMessageVOTypes.REMOVE_CALL_PARTICIPANT: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'CALL_PARTICIPANT_REMOVED', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 96 Terminate Call */ case _constants.chatMessageVOTypes.TERMINATE_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'TERMINATE_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); if (threadId === app.callsManager.currentCallId()) { app.callsManager.removeItem(threadId); } break; /** * Type 97 Mute Call Participant */ case _constants.chatMessageVOTypes.MUTE_CALL_PARTICIPANT: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } if (!app.call.currentCall()) return; app.call.currentCall().handleParticipantMute(messageContent, threadId); break; /** * Type 98 UnMute Call Participant */ case _constants.chatMessageVOTypes.UNMUTE_CALL_PARTICIPANT: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.call.currentCall().handleParticipantUnMute(messageContent, threadId); break; /** * Type 99 Partner rejected call */ case _constants.chatMessageVOTypes.CANCEL_GROUP_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } messageContent.callId = threadId; app.chatEvents.fireEvent('callEvents', { type: 'REJECT_GROUP_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 110 Active Call Participants List */ case _constants.chatMessageVOTypes.ACTIVE_CALL_PARTICIPANTS: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } break; /** * Type 111 Kafka Call Session Created */ case _constants.chatMessageVOTypes.CALL_SESSION_CREATED: // if(!callRequestController.callEstablishedInMySide) // return; if (callRequestController.iRequestedCall) { app.chatEvents.fireEvent('callEvents', { type: 'CALL_SESSION_CREATED', callId: threadId, result: messageContent, uniqueId: uniqueId }); clearTimeout(callRequestController.callRequestTimeout); // if(!requestedCallId) { app.call.sharedVariables.requestedCallId = messageContent.callId; } // } break; /** * Type 113 Turn On Video Call */ case _constants.chatMessageVOTypes.TURN_ON_VIDEO_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } if (!app.call.currentCall()) return; app.call.currentCall().handleParticipantVideoOn(messageContent, threadId, uniqueId); break; /** * Type 114 Turn Off Video Call */ case _constants.chatMessageVOTypes.TURN_OFF_VIDEO_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } if (!app.call.currentCall()) return; app.call.currentCall().handleParticipantVideoOff(messageContent, threadId, uniqueId); break; /** * Type 121 Record Call Request */ case _constants.chatMessageVOTypes.RECORD_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } if (!app.call.currentCall()) { return; } app.chatEvents.fireEvent('callEvents', { type: 'START_RECORDING_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); var user = app.call.currentCallMyUser(); if (app.call.currentCall() && !app.call.currentCall().callServerController().isJanus()) { if (user && user.user().video) { user.videoTopicManager().restartMediaOnKeyFrame(app.store.user.get().id, [4000, 8000, 12000]); } if (app.call.currentCall().users().get("screenShare") && app.call.currentCall().users().get("screenShare").videoTopicManager()) app.call.currentCall().users().get("screenShare").videoTopicManager().restartMediaOnKeyFrame("screenShare", [4000, 8000]); } break; /** * Type 122 End Record Call Request */ case _constants.chatMessageVOTypes.END_RECORD_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'STOP_RECORDING_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 123 Start Screen Share */ case _constants.chatMessageVOTypes.START_SCREEN_SHARE: if (!app.call.currentCall()) return; app.call.currentCall().handleStartScreenShare(chatMessage.typeCode, chatMessage.ownerId, messageContent, threadId, uniqueId); // if (app.store.messagesCallbacks[uniqueId]) { // app.store.messagesCallbacks[uniqueId](Utility.createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); // } break; /** * Type 124 End Screen Share */ case _constants.chatMessageVOTypes.END_SCREEN_SHARE: // screenShareInfo.setIAmOwner(false); if (app.callsManager.currentCallId()) app.callsManager.get(threadId).handleEndScreenShare(messageContent, threadId, uniqueId); break; /** * Type 125 Delete From Call List */ case _constants.chatMessageVOTypes.DELETE_FROM_CALL_HISTORY: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent)); } app.chatEvents.fireEvent('callEvents', { type: 'DELETE_FROM_CALL_LIST', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 126 Destinated Record Call Request */ case _constants.chatMessageVOTypes.DESTINED_RECORD_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } if (!app.call.currentCall()) return; app.chatEvents.fireEvent('callEvents', { type: 'START_RECORDING_CALL', callId: threadId, result: messageContent, uniqueId: uniqueId }); if (app.call.currentCall() && !app.call.currentCall().callServerController().isJanus()) { if (app.call.currentCallMyUser().videoTopicManager()) { app.call.currentCallMyUser().videoTopicManager().restartMediaOnKeyFrame(app.store.user.get().id, [4000, 8000, 12000, 25000]); app.call.currentCallMyUser().videoTopicManager().restartMediaOnKeyFrame("screenShare", [4000, 8000, 12000, 25000]); } } break; /** * Type 129 Get Calls To Join */ case _constants.chatMessageVOTypes.GET_CALLS_TO_JOIN: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'GET_CALLS_TO_JOIN', callId: threadId, uniqueId: uniqueId, result: messageContent }); break; /** * Type 221 Event to tell us p2p call converted to a group call */ case _constants.chatMessageVOTypes.SWITCH_TO_GROUP_CALL_REQUEST: app.chatEvents.fireEvent('callEvents', { type: 'SWITCH_TO_GROUP_CALL', callId: threadId, result: messageContent, //contains: isGroup, callId, threadId uniqueId: uniqueId }); break; /** * Type 222 Call Recording Started */ case _constants.chatMessageVOTypes.RECORD_CALL_STARTED: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'CALL_RECORDING_STARTED', callId: threadId, result: messageContent, uniqueId: uniqueId }); if (app.call.currentCall() && !app.call.currentCall().callServerController().isJanus()) { var user1 = app.call.currentCallMyUser(); if (user1 && user1.user().video && user1.videoTopicManager()) { user1.videoTopicManager().restartMediaOnKeyFrame(app.store.user.get().id, [4000, 8000]); } if (app.call.currentCall().users().get("screenShare") && app.call.currentCall().users().get("screenShare").videoTopicManager()) app.call.currentCall().users().get("screenShare").videoTopicManager().restartMediaOnKeyFrame("screenShare", [4000, 8000]); } break; /** * Type 225 CALL STICKER SYSTEM MESSAGE */ case _constants.chatMessageVOTypes.CALL_STICKER_SYSTEM_MESSAGE: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.chatEvents.fireEvent('callEvents', { type: 'CALL_STICKER', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 227 RECALL_THREAD_PARTICIPANT */ case _constants.chatMessageVOTypes.RECALL_THREAD_PARTICIPANT: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount, uniqueId)); } break; /** * Type 228 INQUIRY_CALL */ case _constants.chatMessageVOTypes.INQUIRY_CALL: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount, uniqueId)); } break; /** * Type 230 CALL_RECORDING_FAILED */ case _constants.chatMessageVOTypes.CALL_RECORDING_FAILED: if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount, uniqueId)); } app.chatEvents.fireEvent('callEvents', { type: 'CALL_RECORDING_FAILED', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 257 RAISE_HAND */ case _constants.chatMessageVOTypes.RAISE_HAND: app.chatEvents.fireEvent('callEvents', { type: 'RAISE_HAND', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 258 LOWER_HAND */ case _constants.chatMessageVOTypes.LOWER_HAND: app.chatEvents.fireEvent('callEvents', { type: 'LOWER_HAND', callId: threadId, result: messageContent, uniqueId: uniqueId }); break; /** * Type 260 Switch call to restricted mode */ case _constants.chatMessageVOTypes.RESTRICT_CALL_SESSION: app.call.adminMethods.onRestrictCallSession(uniqueId, messageContent, chatMessage, threadId); break; /** * Type 261 Add permission to call participant */ case _constants.chatMessageVOTypes.SET_PERMISSION_TO_CALL_PARTICIPANT: app.call.adminMethods.onAddCallParticipantsPermission(uniqueId, messageContent, chatMessage, threadId); break; /** * Type 262 Remove permission from call participant */ case _constants.chatMessageVOTypes.REMOVE_PERMISSION_FROM_CALL_PARTICIPANT: app.call.adminMethods.onRemoveCallParticipantsPermission(uniqueId, messageContent, chatMessage, threadId); break; } }; function processChatStartCallEvent(chatMessage, type, messageContent, contentCount, threadId, uniqueId) { if (app.store.messagesCallbacks[uniqueId]) { app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } app.call.callStopQueue.callStarted = true; messageContent.callId = threadId; app.chatEvents.fireEvent('callEvents', { type: 'CALL_STARTED', callId: threadId, result: messageContent, uniqueId: uniqueId }); if ((0, _typeof2["default"])(messageContent) === 'object' && messageContent.hasOwnProperty('chatDataDto') && !!messageContent.chatDataDto.kurentoAddress) { var options = { video: messageContent.clientDTO.video, mute: messageContent.clientDTO.mute, sendingTopic: messageContent.clientDTO.topicSend, receiveTopic: messageContent.clientDTO.topicReceive, screenShare: messageContent.chatDataDto.screenShare, brokerAddress: messageContent.chatDataDto.brokerAddressWeb, turnAddress: messageContent.chatDataDto.turnAddress, internalTurnAddress: messageContent.chatDataDto.internalTurnAddress, selfData: messageContent.clientDTO, clientsList: messageContent.otherClientDtoList, screenShareOwner: +messageContent.chatDataDto.screenShareUser, recordingOwner: +messageContent.chatDataDto.recordingUser, kurentoAddress: messageContent.chatDataDto.kurentoAddress.split(','), tInfo: messageContent.chatDataDto.turnInfo.split(','), cameraPaused: app.call.joinCallParams.cameraPaused }; app.callsManager.addItem(threadId, options); } else { app.chatEvents.fireEvent('callEvents', { type: 'CALL_ERROR', callId: threadId, message: 'Chat Data DTO is not present!', environmentDetails: getSDKCallDetails() }); } } // janus this.getDevicesList = function () { var callback = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; // if (!app.call.currentCall()) { // raiseCallError(errorList.INVALID_CALLID, callback, true); // return; // } app.call.deviceManager.getMediaDevices(callback); }; this.replaceVideoStream = function (newStream) { try { app.call.deviceManager.replaceVideoStream(newStream, function () {