podchat-browser
Version:
Javascript SDK to use POD's Chat Service - Browser Only
215 lines (195 loc) • 8.23 kB
JavaScript
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