UNPKG

podchat-browser

Version:

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

215 lines (195 loc) 8.23 kB
import {chatMessageVOTypes, inviteeVOidTypes} from "../constants"; import {reformatThreadParticipants} from "../helpers/dataFormatters"; function ThreadParticipantsMethods(app) { /** * Get Thread Participants * * Gets participants list of given thread * * @access pubic * * @param {int} threadId Id of thread which you want to get participants of * @param {int} count Count of objects to get * @param {int} offset Offset of select Query * @param {string} name Search in Participants list (LIKE in name, contactName, email) * * @return {object} Instant Response */ function getThreadParticipants(params, callback) { var sendMessageParams = { chatMessageVOType: chatMessageVOTypes.THREAD_PARTICIPANTS, typeCode: params.typeCode,//params.typeCode, content: {}, subjectId: params.threadId }, returnCache = false; var offset = (parseInt(params.offset) > 0) ? parseInt(params.offset) : 0, count = (parseInt(params.count) > 0) ? parseInt(params.count) : 20; sendMessageParams.content.count = count; sendMessageParams.content.offset = offset; if (typeof params.name === 'string') { sendMessageParams.content.name = params.name; } if (typeof params.username === 'string') { sendMessageParams.content.username = params.username; } if (typeof params.cellphoneNumber === 'string') { sendMessageParams.content.cellphoneNumber = params.cellphoneNumber; } if (typeof params.admin === 'boolean') { sendMessageParams.content.admin = params.admin; } return app.messenger.sendMessage(sendMessageParams, { onResult: function (result) { var returnData = { hasError: result.hasError, cache: false, errorMessage: result.errorMessage, errorCode: result.errorCode }; if (!returnData.hasError) { var messageContent = result.result, messageLength = messageContent.length, resultData = { participants: reformatThreadParticipants(messageContent, params.threadId), contentCount: result.contentCount, hasNext: (sendMessageParams.content.offset + sendMessageParams.content.count < result.contentCount && messageLength > 0), nextOffset: sendMessageParams.content.offset * 1 + messageLength * 1 }; returnData.result = resultData; } callback && callback(returnData); /** * Delete callback so if server pushes response before * cache, cache won't send data again */ callback = undefined; if (!returnData.hasError && returnCache) { app.chatEvents.fireEvent('threadEvents', { type: 'THREAD_PARTICIPANTS_LIST_CHANGE', threadId: params.threadId, result: returnData.result }); } } }); } function addParticipants(params, callback) { /** * + AddParticipantsRequest {object} * - subjectId {int} * + content {list} List of CONTACT IDs or inviteeVO Objects * - uniqueId {string} */ var sendMessageParams = { chatMessageVOType: chatMessageVOTypes.ADD_PARTICIPANT, typeCode: params.typeCode, content: [] }; if (params) { if (parseInt(params.threadId) > 0) { sendMessageParams.subjectId = params.threadId; } if (Array.isArray(params.contactIds)) { sendMessageParams.content = params.contactIds; } if (Array.isArray(params.usernames)) { sendMessageParams.content = []; for (var i = 0; i < params.usernames.length; i++) { sendMessageParams.content.push({ id: params.usernames[i], idType: inviteeVOidTypes.TO_BE_USER_USERNAME }); } } if (Array.isArray(params.coreUserids)) { sendMessageParams.content = []; for (var i = 0; i < params.coreUserids.length; i++) { sendMessageParams.content.push({ id: params.coreUserids[i], idType: inviteeVOidTypes.TO_BE_CORE_USER_ID }); } } } return app.messenger.sendMessage(sendMessageParams, { onResult: function (result) { var returnData = { typeCode: result.typeCode, ownerId: result.ownerId, hasError: result.hasError, cache: false, errorMessage: result.errorMessage, errorCode: result.errorCode }; if (!returnData.hasError) { var messageContent = result.result; returnData.result = { thread: app.threadMethods.createThread(messageContent) }; } callback && callback(returnData); } }); } function addParticipants2(params, callback) { /** * + AddParticipantsRequest {object} * - subjectId {int} * + content {list} List of CONTACT IDs or inviteeVO Objects * - uniqueId {string} */ var sendMessageParams = { chatMessageVOType: chatMessageVOTypes.ADD_PARTICIPANT, typeCode: params.typeCode, content: [] }; if (params) { if (parseInt(params.threadId) > 0) { sendMessageParams.subjectId = params.threadId; } if (Array.isArray(params.contactIds)) { sendMessageParams.content = params.contactIds; } if(Array.isArray(params.invitees)) { sendMessageParams.content = []; for (let i = 0; i < params.invitees.length; i++) { sendMessageParams.content.push({ id: params.invitees[i].id, idType: params.invitees[i].idType, historyTime: params.invitees[i].historyTime }); } } } return app.messenger.sendMessage(sendMessageParams, { onResult: function (result) { let returnData = { typeCode: result.typeCode, ownerId: result.ownerId, hasError: result.hasError, cache: false, errorMessage: result.errorMessage, errorCode: result.errorCode }; if (!returnData.hasError) { let messageContent = result.result; returnData.result = { thread: app.threadMethods.createThread(messageContent) }; } callback && callback(returnData); } }); } return { getThreadParticipants, addParticipants, addParticipants2 } } export default ThreadParticipantsMethods