You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

88 lines
2.8 KiB
JavaScript

(function() {
const openChatButton = document.getElementById('openChatContainer');
const openChatButton2 = document.getElementById('openChatContainer2');
const chatWidget = document.getElementById('chatWidget');
const closeChatButton = document.getElementById('closeChatContainer');
const closeMobileChatButton = document.getElementById('closeMobileChatContainer');
const conversation = document.getElementById('conversation');
const unreadMessages = document.getElementById('unreadMessages');
const closeNewMesagePopup = document.getElementById('closeNewMesagePopup');
function scrollToBottom() {
conversation.scrollTop = conversation.scrollHeight;
}
function toggleBodyScroll(preventScroll) {
if (preventScroll) {
document.body.classList.add('no-scroll');
} else {
document.body.classList.remove('no-scroll');
}
}
function checkScreenSize() {
if (chatWidget.classList.contains('hidden')) {
return;
}
if (window.innerWidth < 798) {
toggleBodyScroll(true);
} else {
toggleBodyScroll(false);
}
}
function openChat() {
isOpen = true;
chatWidget.classList.remove('hidden');
openChatButton.classList.add('hidden');
closeChatButton.classList.remove('hidden');
if (unreadMessages) {
unreadMessages.classList.add('hidden');
}
osichatSocket.send(JSON.stringify({ 'event_type': 'update_read_messages', 'chat_state': 'open' }));
scrollToBottom();
checkScreenSize();
}
function closeChat() {
isOpen = false;
chatWidget.classList.add('hidden');
openChatButton.classList.remove('hidden');
if (closeChatButton) {
closeChatButton.classList.add('hidden');
} else if (closeMobileChatButton) {
closeMobileChatButton.classList.add('hidden');
}
toggleBodyScroll(false);
}
// Attach event listeners
openChatButton.addEventListener('click', openChat);
if (openChatButton2) {
openChatButton2.addEventListener('click', openChat);
}
closeChatButton.addEventListener('click', closeChat);
closeMobileChatButton.addEventListener('click', closeChat);
window.addEventListener('resize', checkScreenSize);
// CSS class to prevent scrolling
const style = document.createElement('style');
style.innerHTML = `
.no-scroll {
overflow: hidden;
}
`;
document.head.appendChild(style);
// To close the unread messages popup
if (closeNewMesagePopup) {
closeNewMesagePopup.addEventListener('click', function() {
if (unreadMessages) {
unreadMessages.classList.add('hidden')
}
});
}
})();