UNPKG

podchat-browser

Version:

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

155 lines (130 loc) 5.34 kB
import {chatMessageVOTypes} from "../constants"; import Utility from "../../utility/utility"; import { formatDataToMakeContact } from "../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: chatMessageVOTypes.GET_CONTACTS, typeCode: params.typeCode, ownerId: params.ownerId, content: content }; const cacheData = app.store.contacts.paginate(content, cache); if (cacheData) { const 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 (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 = formatDataToMakeContact(messageContent[i]); if (contactData) { resultData.contacts.push(contactData); } } returnData.result = resultData; } const 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.createReturnData(chatMessage.typeCode, chatMessage.ownerId, false, '', 0, messageContent, contentCount)); } } return { getContacts, onGetContacts } } export default ContactsMethods