podchat-browser
Version:
Javascript SDK to use POD's Chat Service - Browser Only
1,290 lines (1,073 loc) • 117 kB
JavaScript
"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 () {