UNPKG

podchat

Version:
497 lines (432 loc) 20.5 kB
import {chatMessageVOTypes, SERVICES_PATH} from "../../constants"; import Utility from "../../../utility/utility"; import { formatDataToMakeContact } from "../../helpers/dataFormatters" import {errorList} from "../../errorHandler"; function ContactsV2(app) { const publicized = { add(params) { const urlencoded = new URLSearchParams(); if (params) { if(!params.contacts || !Array.isArray(params.contacts)) { app.errorHandler.raiseError(app.errorHandler.getFilledErrorObject({ ...errorList.PARAMETER_REQUIRED, variables: ['parameterName'], replacements: ["contacts"], }), null, true, {}); return; } for(let i in params.contacts) { if (typeof params.contacts[i].firstName === 'string') { urlencoded.append("firstName", params.contacts[i].firstName); } else { urlencoded.append("firstName", ""); } if (typeof params.contacts[i].lastName === 'string') { urlencoded.append("lastName", params.contacts[i].lastName); } else { urlencoded.append("lastName",""); } if (typeof params.contacts[i].email === 'string') { urlencoded.append("email", params.contacts[i].email); } else { urlencoded.append("email", ""); } if (typeof params.contacts[i].username === 'string') { urlencoded.append("username", params.contacts[i].username); } else { urlencoded.append("username", ""); } if (typeof params.contacts[i].cellphoneNumber === 'string') { urlencoded.append("cellphoneNumber", params.contacts[i].cellphoneNumber); } else { urlencoded.append("cellphoneNumber", ""); } if (typeof params.contacts[i].metadata === 'string') { urlencoded.append("metadata", params.contacts[i].metadata); } else { urlencoded.append("metadata", ""); } if (typeof params.contacts[i].uniqueId === 'string') { urlencoded.append("uniqueId", params.contacts[i].uniqueId); } else { urlencoded.append("uniqueId", ""); } } if (typeof params.typeCode === 'string') { urlencoded.append("typeCode", params.typeCode); } else { urlencoded.append("typeCode", app.sdkParams.generalTypeCode); } if (typeof params.ownerId === 'string') { urlencoded.append("ownerId", params.ownerId); } else { urlencoded.append("ownerId", app.sdkParams.typeCodeOwnerId || 1); } } let reqUniqueId = Utility.generateUUID(); const requestParams = { url: app.sdkParams.SERVICE_ADDRESSES.PLATFORM_ADDRESS + SERVICES_PATH.CONTACTS_V2_ADD, method: 'POST', body: urlencoded, data:{}, headers: { '_token_': app.sdkParams.token, '_token_issuer_': 1, "Content-Type": "application/x-www-form-urlencoded" } }; app.httpRequest.httpRequest(requestParams, function (result) { if (!result.hasError) { const responseData = JSON.parse(result.result.responseText), returnData = { hasError: responseData.hasError, errorMessage: responseData.message, errorCode: responseData.errorCode }; if (!responseData.hasError) { let messageContent = responseData.result, messageLength = responseData.result.length, resultData = { contacts: [], contentCount: messageLength }, contactData; for (let i = 0; i < messageLength; i++) { contactData = formatDataToMakeContact(messageContent[i]); if (contactData) { resultData.contacts.push(contactData); } } // app.store.contacts.addOrUpdate(contactData); returnData.result = resultData; app.chatEvents.fireEvent('contactEvents', { type: 'ADD_CONTACT', result: returnData, uniqueId: reqUniqueId }); } else { app.chatEvents.fireEvent('error', { code: result.errorCode, message: result.errorMessage, response: responseData, uniqueId: reqUniqueId }); } // callback && callback(returnData); } else { app.chatEvents.fireEvent('error', { code: result.errorCode, message: result.errorMessage, error: result, uniqueId: reqUniqueId }); } }); return {uniqueId: reqUniqueId}; }, update(params) { const urlencoded = new URLSearchParams(); if (params) { if(!params.contacts || !Array.isArray(params.contacts)) { app.errorHandler.raiseError(app.errorHandler.getFilledErrorObject({ ...errorList.PARAMETER_REQUIRED, variables: ['parameterName'], replacements: ["contacts"], }), null, true, {}); return; } for(let i in params.contacts) { if (typeof params.contacts[i].id !== "undefined") { urlencoded.append("id", params.contacts[i].id); } else { app.errorHandler.raiseError(app.errorHandler.getFilledErrorObject({ ...errorList.PARAMETER_REQUIRED, variables: ['parameterName'], replacements: ["id"], }), null, true, {}); continue; } if (typeof params.contacts[i].firstName === 'string') { urlencoded.append("firstName", params.contacts[i].firstName); } else { urlencoded.append("firstName", ""); } if (typeof params.contacts[i].lastName === 'string') { urlencoded.append("lastName", params.contacts[i].lastName); } else { urlencoded.append("lastName", ""); } if (typeof params.contacts[i].email === 'string') { urlencoded.append("email", params.contacts[i].email); } else { urlencoded.append("email", ""); } if (typeof params.contacts[i].username === 'string') { urlencoded.append("username", params.contacts[i].username); } else { urlencoded.append("username", ""); } if (typeof params.contacts[i].cellphoneNumber === 'string') { urlencoded.append("cellphoneNumber", params.contacts[i].cellphoneNumber); } else { urlencoded.append("cellphoneNumber", ""); } if (typeof params.contacts[i].metadata === 'string') { urlencoded.append("metadata", params.contacts[i].metadata); } else { urlencoded.append("metadata", ""); } if (typeof params.contacts[i].uniqueId === 'string') { urlencoded.append("uniqueId", params.contacts[i].uniqueId); } else { urlencoded.append("uniqueId", ""); } } if (typeof params.typeCode === 'string') { urlencoded.append("typeCode", params.typeCode); } else { urlencoded.append("typeCode", app.sdkParams.generalTypeCode); } if (typeof params.ownerId === 'string') { urlencoded.append("ownerId", params.ownerId); } else { urlencoded.append("ownerId", app.sdkParams.typeCodeOwnerId || 1); } } let reqUniqueId = Utility.generateUUID(); const requestParams = { url: app.sdkParams.SERVICE_ADDRESSES.PLATFORM_ADDRESS + SERVICES_PATH.CONTACTS_V2_UPDATE, method: 'POST', body: urlencoded, data:{}, headers: { '_token_': app.sdkParams.token, '_token_issuer_': 1 } }; app.httpRequest.httpRequest(requestParams, function (result) { if (!result.hasError) { const responseData = JSON.parse(result.result.responseText), returnData = { hasError: responseData.hasError, errorMessage: responseData.message, errorCode: responseData.errorCode }; if (!responseData.hasError) { let messageContent = responseData.result, messageLength = responseData.result.length, resultData = { contacts: [], contentCount: messageLength }, contactData; for (let i = 0; i < messageLength; i++) { contactData = formatDataToMakeContact(messageContent[i]); if (contactData) { resultData.contacts.push(contactData); } } // app.store.contacts.addOrUpdate(contactData) returnData.result = resultData; app.chatEvents.fireEvent('contactEvents', { type: 'UPDATE_CONTACT', result: returnData, uniqueId: reqUniqueId }); } else { app.chatEvents.fireEvent('error', { code: result.errorCode, message: result.errorMessage, response: responseData, uniqueId: reqUniqueId }); } } else { app.chatEvents.fireEvent('error', { code: result.errorCode, message: result.errorMessage, error: result, uniqueId: reqUniqueId }); } }); return {uniqueId: reqUniqueId}; }, remove(params) { const data = {}; const urlencoded = new URLSearchParams(); if (params) { if(!params.contacts || !Array.isArray(params.contacts)) { app.errorHandler.raiseError(app.errorHandler.getFilledErrorObject({ ...errorList.PARAMETER_REQUIRED, variables: ['parameterName'], replacements: ["contacts"], }), null, true, {}); return; } for(let i in params.contacts) { if (typeof params.contacts[i].id !== "undefined") { urlencoded.append("id", params.contacts[i].id); } else { app.errorHandler.raiseError(app.errorHandler.getFilledErrorObject({ ...errorList.PARAMETER_REQUIRED, variables: ['parameterName'], replacements: ["id"], }), null, true, {}); continue; } } } let reqUniqueId = Utility.generateUUID(); const requestParams = { url: app.sdkParams.SERVICE_ADDRESSES.PLATFORM_ADDRESS + SERVICES_PATH.CONTACTS_V2_REMOVE, method: 'POST', data: {}, body: urlencoded, headers: { '_token_': app.sdkParams.token, '_token_issuer_': 1 } }; app.httpRequest.httpRequest(requestParams, function (result) { if (!result.hasError) { const responseData = JSON.parse(result.result.responseText), returnData = { hasError: responseData.hasError, errorMessage: responseData.message, errorCode: responseData.errorCode, }; if (!responseData.hasError) { returnData.result = responseData.result; //app.store.contacts.remove(data.id) app.chatEvents.fireEvent('contactEvents', { type: 'REMOVE_CONTACT', result: returnData, uniqueId: reqUniqueId }); } else { app.chatEvents.fireEvent('error', { code: result.errorCode, message: result.errorMessage, response: responseData, uniqueId: reqUniqueId }); } } else { app.chatEvents.fireEvent('error', { code: result.errorCode, message: result.errorMessage, error: result, uniqueId: reqUniqueId }); } }); return {uniqueId: reqUniqueId}; }, get(params) { const data = {}; if (params) { if (typeof params.uniqueId === 'string') { data.uniqueId = params.uniqueId; } if (typeof params.id === 'string') { data.id = params.id; } if (typeof params.firstName === 'string') { data.firstName = params.firstName; } if (typeof params.lastName === 'string') { data.lastName = params.lastName; } if (typeof params.email === 'string') { data.email = params.email; } if (typeof params.q === 'string') { data.q = params.q; } if (typeof params.linkedUserId === 'number') { data.linkedUserId = params.linkedUserId; } if (typeof params.targetUserId === 'string') { data.targetUserId = params.targetUserId; } if (typeof params.typeCode === 'string') { data.typeCode = params.typeCode; } if (typeof params.ownerId === 'string') { data.ownerId = params.ownerId; } if (typeof params.cellphoneNumber === 'string') { data.cellphoneNumber = params.cellphoneNumber; } if (typeof params.email === 'string') { data.email = params.email; } if (typeof params.username === 'string') { data.userName = params.username; } if (parseInt(params.size) > 0) { data.size = params.size; } else { data.size = 10; } if (typeof params.offset == "number" && params.offset >= 0) { data.offset = params.offset; } else { data.offset = 0; } if (typeof params.metadata === 'string') { data.metadata = params.metadata; } // data.uniqueId = Utility.generateUUID(); } let reqUniqueId = Utility.generateUUID(); const requestParams = { url: app.sdkParams.SERVICE_ADDRESSES.PLATFORM_ADDRESS + SERVICES_PATH.CONTACTS_V2_GET, method: 'POST', data: data, headers: { '_token_': app.sdkParams.token, '_token_issuer_': 1 } }; app.httpRequest.httpRequest(requestParams, function (result) { if (!result.hasError) { const responseData = JSON.parse(result.result.responseText), returnData = { hasError: responseData.hasError, errorMessage: responseData.message, errorCode: responseData.errorCode }; if (!responseData.hasError) { returnData.result = responseData.result; app.chatEvents.fireEvent('contactEvents', { type: 'GET_CONTACT', result: returnData, uniqueId: reqUniqueId }); } else { app.chatEvents.fireEvent('error', { code: result.errorCode, message: result.errorMessage, response: responseData, uniqueId: reqUniqueId }); } } else { app.chatEvents.fireEvent('error', { code: result.errorCode, message: result.errorMessage, error: result, uniqueId: reqUniqueId }); } }); return {uniqueId: reqUniqueId}; } }; return publicized; } export default ContactsV2