2019-10-02 16:25:46 +00:00
|
|
|
// import { sprintf } from 'sprintf-js';
|
|
|
|
// import { vsprintf } from 'sprintf-js';
|
|
|
|
/*var off_payment_method = document.getElementsByName('offline_payment_method');
|
|
|
|
var ischecked_method = false;
|
|
|
|
for ( var i = 0; i < off_payment_method.length; i++) {
|
|
|
|
if(off_payment_method[i].checked) {
|
|
|
|
ischecked_method = true;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if(!ischecked_method) { //payment method button is not checked
|
|
|
|
alert("Please choose Offline Payment Method");
|
|
|
|
}*/
|
|
|
|
var toUserRadios = document.getElementsByName('toUser');
|
|
|
|
var isCheckedUser = false;
|
|
|
|
var chatTextArea = document.getElementById('chatTextArea');
|
2019-10-15 05:28:56 +00:00
|
|
|
|
|
|
|
var postNewMessageUrl = `http://${hostAddress}/api/chat/post/message`; //hostAddress variable is set in the thymeleaf head fragment
|
|
|
|
var getAllMessagesUrl = `http://${hostAddress}/api/chat/get/messages/`;
|
|
|
|
var getNewMessagesUrl = `http://${hostAddress}/api/chat/get/messages/`;
|
|
|
|
// var postNewMessageUrl = "http://localhost:8080/api/chat/post/message";
|
|
|
|
// var getAllMessagesUrl = "http://localhost:8080/api/chat/get/messages/";
|
|
|
|
// var getNewMessagesUrl = "http://localhost:8080/api/chat/get/messages/";
|
2019-10-02 16:25:46 +00:00
|
|
|
// var messageLog = [];
|
2019-11-21 12:31:37 +00:00
|
|
|
var username = localStorage.getItem('username');
|
2019-11-21 05:40:21 +00:00
|
|
|
var authToken = localStorage.getItem('authToken');
|
2019-11-21 12:31:37 +00:00
|
|
|
|
|
|
|
var passphraseInput = document.getElementById('passphrase');
|
2019-10-15 05:28:56 +00:00
|
|
|
var iterations = 100000;
|
2019-11-05 09:59:19 +00:00
|
|
|
|
|
|
|
var source = document.getElementById("msg_container_template").innerHTML;
|
|
|
|
var msgContainerTemplate = Handlebars.compile(source);
|
|
|
|
var source = document.getElementById("msg_container_send_template").innerHTML;
|
|
|
|
var msgContainerSendTemplate = Handlebars.compile(source);
|
|
|
|
|
|
|
|
var chatAreaNew = document.getElementById('chat_area_new');
|
|
|
|
|
2019-11-05 11:18:29 +00:00
|
|
|
var userBoxes = document.getElementsByName('user-box');
|
|
|
|
|
2019-11-07 03:59:53 +00:00
|
|
|
var md = window.markdownit();
|
|
|
|
|
2019-11-22 15:55:26 +00:00
|
|
|
alertify.set('notifier', 'position', 'top-center');
|
|
|
|
|
2019-11-05 11:18:29 +00:00
|
|
|
// Loop through the buttons and add the active class to the current/clicked button
|
|
|
|
// for (var i = 0; i < btns.length; i++) {
|
|
|
|
// btns[i].addEventListener("click", function() {
|
|
|
|
// var current = document.getElementsByClassName("active");
|
|
|
|
|
|
|
|
// // If there's no active class
|
|
|
|
// if (current.length > 0) {
|
|
|
|
// current[0].className = current[0].className.replace(" active", "");
|
|
|
|
// }
|
|
|
|
|
|
|
|
// // Add the active class to the current/clicked button
|
|
|
|
// this.className += " active";
|
|
|
|
// });
|
|
|
|
// }
|
|
|
|
|
|
|
|
for (let i = 0; i < userBoxes.length; i++) {
|
|
|
|
userBoxes[i].addEventListener('click', function() {
|
|
|
|
let current = document.getElementsByClassName('user-box active');
|
2019-11-06 14:12:43 +00:00
|
|
|
let passphrase = passphraseInput.value;
|
2019-11-05 11:18:29 +00:00
|
|
|
if (current.length > 0) {
|
2019-11-22 09:33:02 +00:00
|
|
|
if (passphrase == '') {
|
2019-11-22 15:55:26 +00:00
|
|
|
// alert('Please input passphrase')
|
|
|
|
alertify.error('Please enter a passphrase');
|
2019-11-22 09:33:02 +00:00
|
|
|
return;
|
|
|
|
}
|
2019-11-05 11:18:29 +00:00
|
|
|
current[0].className = current[0].className.replace(" active", "");
|
2019-11-05 16:18:13 +00:00
|
|
|
|
2019-11-05 11:18:29 +00:00
|
|
|
}
|
|
|
|
// Add the active class to the current/clicked button
|
2019-11-05 16:18:13 +00:00
|
|
|
else if (current.length == 0) {
|
2019-11-06 14:12:43 +00:00
|
|
|
let elem = document.getElementById('passphrase-initial');
|
|
|
|
passphrase = elem.value;
|
2019-11-22 09:33:02 +00:00
|
|
|
if (passphrase == '') {
|
2019-11-22 15:55:26 +00:00
|
|
|
// alert('Please input passphrase')
|
|
|
|
alertify.error('Please enter a passphrase');
|
2019-11-22 09:33:02 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
document.getElementById('no-user-selected').hidden = true;
|
|
|
|
document.getElementById('chat-card').hidden = false;
|
2019-11-06 14:12:43 +00:00
|
|
|
elem.hidden = true;
|
2019-11-05 16:18:13 +00:00
|
|
|
}
|
2019-11-22 09:33:02 +00:00
|
|
|
// console.log(this.getElementsByClassName('to-user-span'));
|
2019-11-17 05:21:44 +00:00
|
|
|
let userName = this.getElementsByClassName('to-user-span')[0].innerText;
|
2019-11-06 05:01:48 +00:00
|
|
|
document.getElementById('user-name-span').innerText = userName;
|
2019-11-06 14:12:43 +00:00
|
|
|
populateMessages(userName, passphrase);
|
|
|
|
sessionStorage.setItem('selectedUser', userName);
|
2019-11-05 11:18:29 +00:00
|
|
|
this.className += " active";
|
|
|
|
})
|
|
|
|
}
|
|
|
|
|
2019-11-06 14:12:43 +00:00
|
|
|
function populateMessages(userName, passphrase) {
|
|
|
|
console.log('Selected user = ' + userName);
|
|
|
|
if (passphrase == '') {
|
2019-10-22 12:12:18 +00:00
|
|
|
alert('Please input passphrase')
|
|
|
|
return;
|
|
|
|
}
|
2019-11-06 14:12:43 +00:00
|
|
|
// console.log(userName);
|
|
|
|
if (sessionStorage.getItem(userName) == null) {
|
2019-10-22 12:12:18 +00:00
|
|
|
chatTextArea.textContent = '';
|
2019-11-05 09:59:19 +00:00
|
|
|
chatAreaNew.innerHTML = '';
|
2019-11-06 14:12:43 +00:00
|
|
|
getAllMessages(userName)
|
2019-10-22 12:12:18 +00:00
|
|
|
.then(json => {
|
2019-11-22 09:33:02 +00:00
|
|
|
if (json == null) return;
|
2019-10-22 12:12:18 +00:00
|
|
|
console.log(json);
|
|
|
|
let i = 0;
|
|
|
|
let messageLog = [];
|
2019-11-05 09:59:19 +00:00
|
|
|
let messageLogNew = [];
|
2019-10-22 12:12:18 +00:00
|
|
|
let lastMessageTimeStamp;
|
2019-11-05 11:18:29 +00:00
|
|
|
|
2019-10-22 12:12:18 +00:00
|
|
|
if (json.length > 0) {
|
|
|
|
json.forEach(function(obj) {
|
|
|
|
// console.log(obj.toUser);
|
|
|
|
messageCipher = JSON.stringify(obj.messageCipher);
|
|
|
|
console.log(messageCipher);
|
|
|
|
// let message = sjcl.decrypt("password", messageCipher);
|
2019-11-07 03:59:53 +00:00
|
|
|
let message = md.render(sjcl.decrypt(passphrase, messageCipher));
|
2019-10-22 12:12:18 +00:00
|
|
|
let utcDate = obj.messageTime;
|
|
|
|
lastMessageTimeStamp = utcDate;
|
|
|
|
let localDate = new Date(utcDate);
|
|
|
|
let messageLine = sprintf('%s %s: %s ', localDate, obj.fromUser, message);
|
|
|
|
|
2019-11-05 09:59:19 +00:00
|
|
|
|
2019-10-22 12:12:18 +00:00
|
|
|
// localDate.``
|
|
|
|
// console.log('localDate = ' + localDate);
|
|
|
|
console.log(messageLine);
|
|
|
|
// chatTextArea.append(obj.fromUser + ": " + message + "\n");
|
|
|
|
chatTextArea.append(messageLine + '\n');
|
|
|
|
messageLog[i++] = messageLine;
|
|
|
|
chatTextArea.scrollTop = chatTextArea.scrollHeight;
|
|
|
|
// console.log('Message log = ' + messageLog);
|
|
|
|
|
2019-11-05 09:59:19 +00:00
|
|
|
let context = { fromUser: obj.fromUser, message: message, time: localDate.toLocaleString() };
|
|
|
|
let msgContainer;
|
|
|
|
if (obj.fromUser == username) {
|
|
|
|
msgContainer = msgContainerSendTemplate(context);
|
|
|
|
} else {
|
|
|
|
msgContainer = msgContainerTemplate(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
messageLogNew.push(JSON.stringify(context));
|
2019-11-06 15:20:57 +00:00
|
|
|
$(chatAreaNew).append(DOMPurify.sanitize(msgContainer));
|
2019-11-05 09:59:19 +00:00
|
|
|
|
2019-10-22 12:12:18 +00:00
|
|
|
|
|
|
|
});
|
2019-11-06 14:12:43 +00:00
|
|
|
sessionStorage.setItem(userName, JSON.stringify(messageLog));
|
|
|
|
sessionStorage.setItem(userName + username + 'new', JSON.stringify(messageLogNew));
|
2019-11-05 09:59:19 +00:00
|
|
|
// console.log()
|
2019-10-22 12:12:18 +00:00
|
|
|
// sessionStorage.clear();
|
|
|
|
console.log('Last message time = ' + lastMessageTimeStamp);
|
2019-11-06 14:12:43 +00:00
|
|
|
sessionStorage.setItem(userName + '-time', lastMessageTimeStamp);
|
2019-10-22 12:12:18 +00:00
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
2019-11-06 14:12:43 +00:00
|
|
|
console.log("Stored messages = " + sessionStorage.getItem(userName));
|
|
|
|
let storedMessages = JSON.parse(sessionStorage.getItem(userName));
|
|
|
|
let storedMessagesNew = JSON.parse(sessionStorage.getItem(userName + username + 'new'));
|
|
|
|
let lastMessageTime = sessionStorage.getItem(userName + '-time');
|
2019-10-22 12:12:18 +00:00
|
|
|
console.log("last message time stamp = " + lastMessageTime);
|
|
|
|
if (lastMessageTime != null) {
|
2019-11-06 14:12:43 +00:00
|
|
|
getNewMessages(userName, lastMessageTime)
|
2019-10-22 12:12:18 +00:00
|
|
|
.then(json => {
|
2019-11-22 09:33:02 +00:00
|
|
|
if (json == null) return;
|
2019-10-22 12:12:18 +00:00
|
|
|
console.log(json)
|
|
|
|
if (json.length > 0) {
|
|
|
|
json.forEach(function(obj) {
|
|
|
|
let messageCipher = JSON.stringify(obj.messageCipher);
|
2019-11-07 03:59:53 +00:00
|
|
|
let message = md.render(sjcl.decrypt(passphrase, messageCipher));
|
2019-10-22 12:12:18 +00:00
|
|
|
// console.log(message);
|
|
|
|
// chatTextArea.append(message + "\n");
|
|
|
|
let utcDate = obj.messageTime;
|
|
|
|
lastMessageTimeStamp = utcDate;
|
|
|
|
let localDate = new Date(utcDate);
|
|
|
|
let messageLine = sprintf('%s %s: %s', localDate, obj.fromUser, message);
|
|
|
|
|
|
|
|
// localDate.``
|
|
|
|
// console.log('localDate = ' + localDate);
|
|
|
|
console.log(messageLine);
|
|
|
|
// chatTextArea.append(obj.fromUser + ": " + message + "\n");
|
|
|
|
chatTextArea.append(messageLine + '\n');
|
|
|
|
chatTextArea.scrollTop = chatTextArea.scrollHeight;
|
|
|
|
storedMessages.push(messageLine);
|
|
|
|
|
2019-11-05 09:59:19 +00:00
|
|
|
let context = { fromUser: obj.fromUser, message: message, time: localDate.toLocaleString() };
|
|
|
|
let msgContainer;
|
|
|
|
if (obj.fromUser == username) {
|
|
|
|
msgContainer = msgContainerSendTemplate(context);
|
|
|
|
} else {
|
|
|
|
msgContainer = msgContainerTemplate(context);
|
|
|
|
}
|
|
|
|
|
|
|
|
storedMessagesNew.push(JSON.stringify(context));
|
2019-11-06 15:20:57 +00:00
|
|
|
$(chatAreaNew).append(DOMPurify.sanitize(msgContainer));
|
2019-11-05 09:59:19 +00:00
|
|
|
|
2019-10-22 12:12:18 +00:00
|
|
|
})
|
2019-11-06 14:12:43 +00:00
|
|
|
sessionStorage.setItem(userName + '-time', lastMessageTimeStamp);
|
|
|
|
sessionStorage.setItem(userName, JSON.stringify(storedMessages));
|
|
|
|
sessionStorage.setItem(userName + username + 'new', JSON.stringify(storedMessagesNew));
|
|
|
|
console.log("this value stored" + sessionStorage.getItem(userName))
|
2019-10-22 12:12:18 +00:00
|
|
|
console.log("last message time stamp = " + lastMessageTimeStamp);
|
2019-11-06 14:12:43 +00:00
|
|
|
console.log(sessionStorage.getItem(userName + '-time'));
|
2019-10-22 12:12:18 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
chatTextArea.textContent = '';
|
2019-11-05 09:59:19 +00:00
|
|
|
chatAreaNew.innerHTML = '';
|
2019-10-22 12:12:18 +00:00
|
|
|
console.log("Stored messages 2 = " + storedMessages);
|
|
|
|
storedMessages.forEach(function(messageLine) {
|
|
|
|
chatTextArea.append(messageLine + '\n');
|
|
|
|
chatTextArea.scrollTop = chatTextArea.scrollHeight;
|
2019-11-05 09:59:19 +00:00
|
|
|
|
|
|
|
// let context = {message: messageLine};
|
|
|
|
// let msgContainer;
|
|
|
|
// if(obj.fromUser == username)
|
|
|
|
// {
|
|
|
|
// msgContainer = msgContainerSendTemplate(context);
|
|
|
|
// }
|
|
|
|
// else{
|
|
|
|
// msgContainer = msgContainerTemplate(context);
|
|
|
|
// }
|
|
|
|
|
|
|
|
// $(chatAreaNew).append(msgContainer);
|
|
|
|
})
|
|
|
|
|
|
|
|
storedMessagesNew.forEach(function(contextString) {
|
|
|
|
let context = JSON.parse(contextString);
|
|
|
|
let msgContainer;
|
|
|
|
if (context.fromUser == username) {
|
|
|
|
msgContainer = msgContainerSendTemplate(context);
|
|
|
|
} else {
|
|
|
|
msgContainer = msgContainerTemplate(context);
|
|
|
|
}
|
|
|
|
|
2019-11-06 15:20:57 +00:00
|
|
|
$(chatAreaNew).append(DOMPurify.sanitize(msgContainer));
|
2019-11-22 16:46:18 +00:00
|
|
|
scrollChatAreaAnimated(2400);
|
2019-10-22 12:12:18 +00:00
|
|
|
})
|
|
|
|
|
2019-11-22 16:46:18 +00:00
|
|
|
|
2019-10-22 12:12:18 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
// sessionStorage.clear();
|
|
|
|
// chatTextArea.append(JSON.stringify(storedMessages));
|
2019-10-02 16:25:46 +00:00
|
|
|
|
2019-10-22 12:12:18 +00:00
|
|
|
}
|
|
|
|
// sessionStorage.setItem('status', 'ready');
|
2019-11-06 14:12:43 +00:00
|
|
|
// sessionStorage.setItem('userName', messageLog);
|
2019-10-22 12:12:18 +00:00
|
|
|
// console.log('Message log = ' + messageLog);
|
|
|
|
// }
|
|
|
|
|
2019-11-06 14:12:43 +00:00
|
|
|
// let passphraseKey = userName + '-passphrase';
|
|
|
|
// sessionStorage.setItem(passphraseKey, passphrase);
|
2019-10-22 12:12:18 +00:00
|
|
|
// console.log(sessionStorage.getItem(passphraseKey));
|
2019-11-06 14:12:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
// var lastMessageTimeStamp;
|
|
|
|
|
|
|
|
// console.log(authToken);
|
|
|
|
// 'Basic ' + btoa("hmm" + ":" + "hmm")
|
|
|
|
|
|
|
|
Handlebars.registerHelper('avatar', function() {
|
|
|
|
return '<div class="img_cont_msg"> <img src="https://static.turbosquid.com/Preview/001292/481/WV/_D.jpg" class="rounded-circle user_img_msg"> </div>';
|
2019-10-22 12:12:18 +00:00
|
|
|
});
|
2019-10-02 16:25:46 +00:00
|
|
|
|
|
|
|
|
2019-11-06 14:12:43 +00:00
|
|
|
// var user;
|
|
|
|
function getSelectedUser() {
|
|
|
|
for (var i = 0; i < toUserRadios.length; i++) {
|
|
|
|
if (toUserRadios[i].checked) {
|
|
|
|
let user = toUserRadios[i].value;
|
|
|
|
console.log('sending to user = ' + user);
|
|
|
|
isCheckedUser = true;
|
|
|
|
return user;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
function getSelectedUserNew() {
|
|
|
|
return sessionStorage.getItem('selectedUser');
|
|
|
|
}
|
|
|
|
|
|
|
|
document.getElementById('chatMessageForm').addEventListener('submit', function(e) {
|
|
|
|
let chatInput = document.getElementById('chatInput');
|
|
|
|
e.preventDefault();
|
|
|
|
let user = getSelectedUserNew();
|
|
|
|
|
|
|
|
if (!this.checkValidity()) {
|
|
|
|
console.log("error");
|
|
|
|
this.classList.add('was-validated');
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
this.classList.add('was-validated');
|
|
|
|
|
|
|
|
if (user == null) {
|
2019-11-22 15:55:26 +00:00
|
|
|
// window.alert('please select a user');
|
|
|
|
alertify.error('Please select a user');
|
2019-11-06 14:12:43 +00:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
let messageContent = chatInput.value;
|
2019-11-07 03:59:53 +00:00
|
|
|
let context = { fromUser: username, message: md.render(messageContent), time: new Date().toLocaleString() };
|
|
|
|
let msgContainer = msgContainerSendTemplate(context);
|
|
|
|
$(chatAreaNew).append(DOMPurify.sanitize(msgContainer));
|
2019-11-22 14:55:08 +00:00
|
|
|
scrollChatAreaAnimated(2400);
|
2019-11-06 14:12:43 +00:00
|
|
|
let messageCipher = sjcl.encrypt(passphraseInput.value, messageContent, { mode: "gcm", ts: 128, adata: "", iter: iterations });
|
|
|
|
let messageCipherJson = JSON.parse(messageCipher);
|
|
|
|
let chatMessageDTO = {
|
|
|
|
"toUser": user,
|
|
|
|
"messageCipher": messageCipherJson
|
|
|
|
}
|
|
|
|
messageSend(JSON.stringify(chatMessageDTO));
|
|
|
|
})
|
|
|
|
|
|
|
|
// console.log('Credentials = ' + JSON.parse(sessionStorage.getItem('credentials')));
|
|
|
|
|
|
|
|
|
|
|
|
function messageSend(chatMessageDTO) {
|
|
|
|
let headers = new Headers();
|
|
|
|
// console.log("Token = " + btoa("hmm" + ":" + "hmm"))
|
|
|
|
|
|
|
|
// headers.append('Accept','application/json')
|
|
|
|
headers.append('Content-Type', 'application/json');
|
2019-11-21 05:40:21 +00:00
|
|
|
// headers.append('Authorization', basicAuthToken);
|
|
|
|
headers.append('X-AUTH-TOKEN', authToken);
|
2019-11-06 14:12:43 +00:00
|
|
|
fetch(postNewMessageUrl, {
|
|
|
|
method: 'POST',
|
|
|
|
headers: headers,
|
|
|
|
body: chatMessageDTO
|
|
|
|
})
|
2019-11-22 14:55:08 +00:00
|
|
|
.then(response => {
|
|
|
|
console.log(response);
|
2019-11-22 15:55:26 +00:00
|
|
|
return response.clone();
|
2019-11-22 14:55:08 +00:00
|
|
|
})
|
2019-11-22 15:55:26 +00:00
|
|
|
.then(response => fetchHandler(response));
|
2019-11-06 14:12:43 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
async function getAllMessages(toUser) {
|
|
|
|
let headers = new Headers();
|
|
|
|
// headers.append('Accept','application/json')
|
|
|
|
// headers.append('Content-Type', 'application/json');
|
2019-11-21 05:40:21 +00:00
|
|
|
// headers.append('Authorization', basicAuthToken);
|
|
|
|
headers.append('X-AUTH-TOKEN', authToken);
|
2019-11-06 14:12:43 +00:00
|
|
|
let response = await fetch(getAllMessagesUrl + toUser, {
|
|
|
|
method: 'GET',
|
|
|
|
headers: headers
|
|
|
|
});
|
2019-11-22 07:22:16 +00:00
|
|
|
console.log(response);
|
2019-11-22 09:33:02 +00:00
|
|
|
if (fetchErrorHandler(response.clone())) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
// if (response.status == 440) {
|
|
|
|
// window.alert('Token has expired. Please login again');
|
|
|
|
// return null;
|
|
|
|
// }
|
2019-11-06 14:12:43 +00:00
|
|
|
let data = await response.json();
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
async function getNewMessages(toUser, lastMessageTimeStamp) {
|
|
|
|
let headers = new Headers();
|
2019-11-21 05:40:21 +00:00
|
|
|
// headers.append('Authorization', basicAuthToken);
|
|
|
|
headers.append('X-AUTH-TOKEN', authToken);
|
2019-11-06 14:12:43 +00:00
|
|
|
let response = await fetch(`${getNewMessagesUrl}${toUser}/${lastMessageTimeStamp}`, {
|
|
|
|
method: 'GET',
|
|
|
|
headers: headers
|
|
|
|
});
|
2019-11-22 09:33:02 +00:00
|
|
|
console.log(response.clone());
|
|
|
|
if (fetchErrorHandler(response.clone())) {
|
|
|
|
return null;
|
2019-11-22 07:22:16 +00:00
|
|
|
}
|
2019-11-06 14:12:43 +00:00
|
|
|
let data = await response.json();
|
|
|
|
return data;
|
|
|
|
}
|
2019-11-05 09:59:19 +00:00
|
|
|
|
|
|
|
$(document).ready(function() {
|
|
|
|
$('#action_menu_btn').click(function() {
|
|
|
|
$('.action_menu').toggle();
|
|
|
|
});
|
2019-11-22 09:33:02 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
function fetchHandler(response) {
|
|
|
|
if (response.ok) {
|
|
|
|
return response.json().then(json => {
|
|
|
|
// the status was ok and there is a json body
|
2019-11-22 15:55:26 +00:00
|
|
|
// return Promise.resolve({ json: json, response: response });
|
|
|
|
alertify.success('Message sent succesfully' + sprintf(" (http code %d)", response.status));
|
2019-11-22 09:33:02 +00:00
|
|
|
}).catch(err => {
|
|
|
|
// the status was ok but there is no json body
|
2019-11-22 15:55:26 +00:00
|
|
|
// return Promise.resolve({ response: response });
|
|
|
|
alertify.success('Message sent succesfully' + sprintf(" (http code %d)", response.status));
|
2019-11-22 09:33:02 +00:00
|
|
|
});
|
|
|
|
|
|
|
|
} else {
|
|
|
|
return response.json().catch(err => {
|
|
|
|
// the status was not ok and there is no json body
|
2019-11-22 15:55:26 +00:00
|
|
|
// throw new Error(response.statusText);
|
|
|
|
alertify.error('Some error occured. Please try again.');
|
2019-11-22 09:33:02 +00:00
|
|
|
}).then(json => {
|
|
|
|
// the status was not ok but there is a json body
|
2019-11-22 15:55:26 +00:00
|
|
|
// throw new Error(json.error.message); // example error message returned by a REST
|
|
|
|
let delay = alertify.get('notifier', 'delay');
|
|
|
|
alertify.set('notifier', 'delay', 30);
|
|
|
|
let errorMessage = "";
|
|
|
|
json.errors.forEach(function(data) {
|
|
|
|
errorMessage += sprintf("Field Name: %s \n Rejected value: %s \n Reason: %s \n", data.field_name, data.rejected_value, data.error_message);
|
|
|
|
});
|
|
|
|
alertify.error(sprintf('There were errors in your message - %s', errorMessage));
|
|
|
|
alertify.set('notifier', 'delay', delay);
|
2019-11-22 09:33:02 +00:00
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function fetchErrorHandler(response) {
|
2019-11-22 15:55:26 +00:00
|
|
|
// alertify.success('Current position : ' + alertify.get('notifier', 'position'));
|
2019-11-22 09:33:02 +00:00
|
|
|
if (!response.ok) {
|
|
|
|
return response.text().catch(err => {
|
|
|
|
// the status was not ok and there is no json body
|
|
|
|
// throw new Error(response.statusText);
|
2019-11-22 15:55:26 +00:00
|
|
|
// window.alert(sprintf('Some error occured. Http code is %s', response.status));
|
|
|
|
alertify.error(sprintf('Some error occured. Http code is %s', response.status));
|
2019-11-22 09:33:02 +00:00
|
|
|
return true;
|
|
|
|
}).then(json => {
|
|
|
|
// the status was not ok but there is a json body
|
|
|
|
// throw new Error(json.error.message); // example error message returned by a REST API
|
2019-11-22 15:55:26 +00:00
|
|
|
// window.alert(sprintf('Error: %s (Http code %s)', json, response.status));
|
|
|
|
alertify.error(sprintf('Some error occured. Http code is %s', response.status));
|
2019-11-22 09:33:02 +00:00
|
|
|
console.log(json);
|
|
|
|
return true;
|
|
|
|
});
|
|
|
|
}
|
2019-11-22 14:55:08 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
function scrollChatAreaAnimated(delay) {
|
|
|
|
$(chatAreaNew).stop().animate({
|
|
|
|
scrollTop: $(chatAreaNew)[0].scrollHeight
|
|
|
|
}, delay);
|
2019-11-22 09:33:02 +00:00
|
|
|
}
|