podchat-browser
Version:
Javascript SDK to use POD's Chat Service - Browser Only
168 lines (134 loc) • 4.61 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = void 0;
var _constants = require("../constants");
var _utility = _interopRequireDefault(require("../../utility/utility"));
var _dataFormatters = require("../helpers/dataFormatters");
function ContactsMethods(app) {
function getContacts(params, callback) {
var count = 25,
offset = 0,
content = {},
cache = false,
returnCache = false;
if (params) {
if (typeof params.cache == 'boolean') {
cache = params.cache;
}
if (parseInt(params.count) > 0) {
count = parseInt(params.count);
}
if (parseInt(params.offset) > 0) {
offset = parseInt(params.offset);
}
if (typeof params.query === 'string') {
content.query = params.query;
}
if (typeof params.email === 'string') {
content.email = params.email;
}
if (typeof params.cellphoneNumber === 'string') {
content.cellphoneNumber = params.cellphoneNumber;
}
if (parseInt(params.contactId) > 0) {
content.id = params.contactId;
}
if (typeof params.uniqueId === 'string') {
content.uniqueId = params.uniqueId;
}
if (typeof params.username === 'string') {
content.username = params.username;
}
if (typeof params.coreUserId !== "undefined") {
content.coreUserId = params.coreUserId;
}
var functionLevelCache = typeof params.cache == 'boolean' ? params.cache : true;
}
content.size = count;
content.offset = offset;
var sendMessageParams = {
chatMessageVOType: _constants.chatMessageVOTypes.GET_CONTACTS,
typeCode: params.typeCode,
ownerId: params.ownerId,
content: content
};
var cacheData = app.store.contacts.paginate(content, cache);
if (cacheData) {
var returnData = cacheData;
callback && callback(returnData); //if (!returnData.hasError) {
// app.chatEvents.fireEvent('contactEvents', {
// type: 'CONTACTS_LIST_CHANGE',
// result: returnData.result
// });
//}
callback = undefined;
return;
}
/**
* Retrieve Contacts from server
*/
return app.messenger.sendMessage(sendMessageParams, {
onResult: function onResult(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,
messageLength = messageContent.length,
resultData = {
contacts: [],
contentCount: result.contentCount,
hasNext: offset + count < result.contentCount && messageLength > 0,
nextOffset: offset * 1 + messageLength * 1
},
contactData;
for (var i = 0; i < messageLength; i++) {
contactData = (0, _dataFormatters.formatDataToMakeContact)(messageContent[i]);
if (contactData) {
resultData.contacts.push(contactData);
}
}
returnData.result = resultData;
}
var cloneReturnData = JSON.parse(JSON.stringify(returnData));
cloneReturnData.result.fromCache = false;
callback && callback(cloneReturnData);
if (!returnData.hasError) {
if (cache) {
app.store.contacts.saveMany(content, returnData.result, count, offset);
}
if (returnCache) {
app.chatEvents.fireEvent('contactEvents', {
type: 'CONTACTS_LIST_CHANGE',
result: returnData.result
});
}
}
/**
* Delete callback so if server pushes response before
* cache, cache won't send data again
*/
callback = undefined;
}
});
}
function onGetContacts(uniqueId, messageContent, contentCount, chatMessage) {
if (app.store.messagesCallbacks[uniqueId]) {
app.store.messagesCallbacks[uniqueId](_utility["default"].createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount));
}
}
return {
getContacts: getContacts,
onGetContacts: onGetContacts
};
}
var _default = ContactsMethods;
exports["default"] = _default;