|
|
@ -18,6 +18,7 @@ var chatTextArea = document.getElementById('chatTextArea'); |
|
|
|
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 getActiveUsersUrl = `http://${hostAddress}/api/chat/get/active-users/`; |
|
|
|
// 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/";
|
|
|
@ -32,6 +33,10 @@ 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 source = document.getElementById("user-contact-online-template").innerHTML; |
|
|
|
var userContactOnlineTemplate = Handlebars.compile(source); |
|
|
|
var source = document.getElementById("user-contact-offline-template").innerHTML; |
|
|
|
var userContactOfflineTemplate = Handlebars.compile(source); |
|
|
|
|
|
|
|
var chatAreaNew = document.getElementById('chat_area_new'); |
|
|
|
|
|
|
@ -39,6 +44,22 @@ var userBoxes = document.getElementsByName('user-box'); |
|
|
|
|
|
|
|
var md = window.markdownit(); |
|
|
|
|
|
|
|
var activeUsers = {}; |
|
|
|
|
|
|
|
var fuseOptions = { |
|
|
|
shouldSort: true, |
|
|
|
threshold: 0.01, |
|
|
|
location: 0, |
|
|
|
distance: 100, |
|
|
|
maxPatternLength: 32, |
|
|
|
minMatchCharLength: 1, |
|
|
|
keys: [ |
|
|
|
"userName", |
|
|
|
] |
|
|
|
}; |
|
|
|
|
|
|
|
log.setLevel('TRACE'); |
|
|
|
|
|
|
|
alertify.set('notifier', 'position', 'top-center'); |
|
|
|
|
|
|
|
// Loop through the buttons and add the active class to the current/clicked button
|
|
|
@ -56,39 +77,54 @@ alertify.set('notifier', 'position', 'top-center'); |
|
|
|
// });
|
|
|
|
// }
|
|
|
|
|
|
|
|
getActiveUsers(authToken) |
|
|
|
.then(data => { |
|
|
|
// activeUsers = data;
|
|
|
|
sessionStorage.setItem('activeUsers', JSON.stringify(data)); |
|
|
|
log.log(sessionStorage.getItem('activeUsers')); |
|
|
|
}) |
|
|
|
|
|
|
|
for (let i = 0; i < userBoxes.length; i++) { |
|
|
|
userBoxes[i].addEventListener('click', function() { |
|
|
|
let current = document.getElementsByClassName('user-box active'); |
|
|
|
let passphrase = passphraseInput.value; |
|
|
|
if (current.length > 0) { |
|
|
|
if (passphrase == '') { |
|
|
|
// alert('Please input passphrase')
|
|
|
|
alertify.error('Please enter a passphrase'); |
|
|
|
return; |
|
|
|
} |
|
|
|
current[0].className = current[0].className.replace(" active", ""); |
|
|
|
userBoxes[i].addEventListener('click', userCallBack) |
|
|
|
} |
|
|
|
|
|
|
|
function addUserCallBacks() { |
|
|
|
for (let i = 0; i < userBoxes.length; i++) { |
|
|
|
userBoxes[i].addEventListener('click', userCallBack) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
function userCallBack() { |
|
|
|
let current = document.getElementsByClassName('user-box active'); |
|
|
|
let passphrase = passphraseInput.value; |
|
|
|
if (current.length > 0) { |
|
|
|
if (passphrase == '') { |
|
|
|
// alert('Please input passphrase')
|
|
|
|
alertify.error('Please enter a passphrase'); |
|
|
|
return; |
|
|
|
} |
|
|
|
// Add the active class to the current/clicked button
|
|
|
|
else if (current.length == 0) { |
|
|
|
let elem = document.getElementById('passphrase-initial'); |
|
|
|
passphrase = elem.value; |
|
|
|
if (passphrase == '') { |
|
|
|
// alert('Please input passphrase')
|
|
|
|
alertify.error('Please enter a passphrase'); |
|
|
|
return; |
|
|
|
} |
|
|
|
document.getElementById('no-user-selected').hidden = true; |
|
|
|
document.getElementById('chat-card').hidden = false; |
|
|
|
elem.hidden = true; |
|
|
|
current[0].className = current[0].className.replace(" active", ""); |
|
|
|
|
|
|
|
} |
|
|
|
// Add the active class to the current/clicked button
|
|
|
|
else if (current.length == 0) { |
|
|
|
let elem = document.getElementById('passphrase-initial'); |
|
|
|
passphrase = elem.value; |
|
|
|
if (passphrase == '') { |
|
|
|
// alert('Please input passphrase')
|
|
|
|
alertify.error('Please enter a passphrase'); |
|
|
|
return; |
|
|
|
} |
|
|
|
// console.log(this.getElementsByClassName('to-user-span'));
|
|
|
|
let userName = this.getElementsByClassName('to-user-span')[0].innerText; |
|
|
|
document.getElementById('user-name-span').innerText = userName; |
|
|
|
populateMessages(userName, passphrase); |
|
|
|
sessionStorage.setItem('selectedUser', userName); |
|
|
|
this.className += " active"; |
|
|
|
}) |
|
|
|
document.getElementById('no-user-selected').hidden = true; |
|
|
|
document.getElementById('chat-card').hidden = false; |
|
|
|
elem.hidden = true; |
|
|
|
} |
|
|
|
// console.log(this.getElementsByClassName('to-user-span'));
|
|
|
|
let userName = this.getElementsByClassName('to-user-span')[0].innerText; |
|
|
|
document.getElementById('user-name-span').innerText = userName; |
|
|
|
populateMessages(userName, passphrase); |
|
|
|
sessionStorage.setItem('selectedUser', userName); |
|
|
|
this.className += " active"; |
|
|
|
} |
|
|
|
|
|
|
|
function populateMessages(userName, passphrase) { |
|
|
@ -240,12 +276,11 @@ function populateMessages(userName, passphrase) { |
|
|
|
scrollChatAreaAnimated(2400); |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
// sessionStorage.clear();
|
|
|
|
// chatTextArea.append(JSON.stringify(storedMessages));
|
|
|
|
|
|
|
|
} |
|
|
@ -317,6 +352,56 @@ document.getElementById('chatMessageForm').addEventListener('submit', function(e |
|
|
|
messageSend(JSON.stringify(chatMessageDTO)); |
|
|
|
}) |
|
|
|
|
|
|
|
document.getElementById('user-search').addEventListener('submit', function(e) { |
|
|
|
e.preventDefault(); |
|
|
|
let contactsBox = document.getElementById('contacts-box'); |
|
|
|
let temp = contactsBox.innerHTML; |
|
|
|
// log.trace(temp);
|
|
|
|
let searchTerm = document.getElementById('user-search-term').value; |
|
|
|
log.debug("search term value = " + searchTerm); |
|
|
|
let list = JSON.parse(sessionStorage.getItem('activeUsers')); |
|
|
|
log.debug("active users"); |
|
|
|
log.debug(list); |
|
|
|
let fuse = new Fuse(list, fuseOptions); |
|
|
|
let searchResult = fuse.search(searchTerm); |
|
|
|
populateContactsBox(contactsBox, searchResult); |
|
|
|
addUserCallBacks(); |
|
|
|
log.debug(searchResult); |
|
|
|
}) |
|
|
|
document.getElementById('user-search-term').addEventListener('input', function(e) { |
|
|
|
e.preventDefault(); |
|
|
|
if (this.value.length < 2) { |
|
|
|
log.debug("inputted") |
|
|
|
let cancelButton = document.getElementById('user-search-cancel'); |
|
|
|
cancelButton.hidden = false; |
|
|
|
} |
|
|
|
}) |
|
|
|
document.getElementById('user-search-cancel').addEventListener('click', function(e) { |
|
|
|
e.preventDefault(); |
|
|
|
let list = JSON.parse(sessionStorage.getItem('activeUsers')); |
|
|
|
let contactsBox = document.getElementById('contacts-box'); |
|
|
|
populateContactsBox(contactsBox,list); |
|
|
|
addUserCallBacks(); |
|
|
|
document.getElementById('user-search-term').value = ""; |
|
|
|
this.hidden = true; |
|
|
|
}) |
|
|
|
|
|
|
|
function populateContactsBox(contactsBox, list) |
|
|
|
{ |
|
|
|
let userContactBoxList = ""; |
|
|
|
list.forEach(function(activeUser) { |
|
|
|
log.debug(activeUser); |
|
|
|
if (activeUser.online) { |
|
|
|
userContactBoxList += userContactOnlineTemplate(activeUser); |
|
|
|
} else { |
|
|
|
userContactBoxList += userContactOfflineTemplate(activeUser); |
|
|
|
} |
|
|
|
}) |
|
|
|
contactsBox.innerHTML = userContactBoxList; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// console.log('Credentials = ' + JSON.parse(sessionStorage.getItem('credentials')));
|
|
|
|
|
|
|
|
|
|
|
@ -379,6 +464,23 @@ async function getNewMessages(toUser, lastMessageTimeStamp) { |
|
|
|
return data; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
async function getActiveUsers(authToken2) { |
|
|
|
let headers = new Headers(); |
|
|
|
// headers.append('Authorization', basicAuthToken);
|
|
|
|
headers.append('X-AUTH-TOKEN', authToken2); |
|
|
|
let response = await fetch(getActiveUsersUrl, { |
|
|
|
method: 'GET', |
|
|
|
headers: headers |
|
|
|
}); |
|
|
|
console.log(response.clone()); |
|
|
|
if (fetchErrorHandler(response.clone())) { |
|
|
|
return null; |
|
|
|
} |
|
|
|
let data = await response.json(); |
|
|
|
return data; |
|
|
|
} |
|
|
|
|
|
|
|
$(document).ready(function() { |
|
|
|
$('#action_menu_btn').click(function() { |
|
|
|
$('.action_menu').toggle(); |
|
|
|