podchat
Version:
Javascript SDK to use POD's Chat Service
497 lines (432 loc) • 20.5 kB
JavaScript
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