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.
64 lines
2.5 KiB
JavaScript
64 lines
2.5 KiB
JavaScript
let admin_chat_ws_scheme = window.location.protocol === "https:" ? "wss" : "ws";
|
|
let protocol = window.location.protocol === "https:" ? "https" : "http";
|
|
let admin_chat_domain = "192.168.1.109:8000";
|
|
let userId = document.getElementById('userId').textContent.trim();
|
|
let osichatroomsSocket;
|
|
let osichatadminroomSocket;
|
|
|
|
function appendInnerConversationScript(div) {
|
|
const innerConversationScript = document.createElement('script');
|
|
innerConversationScript.type = 'text/javascript';
|
|
innerConversationScript.src = `${protocol}://${admin_chat_domain}/static/js/osichat-admin/inner-conversation.js`;
|
|
div.appendChild(innerConversationScript);
|
|
}
|
|
|
|
function getRooms(){
|
|
osichatroomsSocket = new WebSocket(`${admin_chat_ws_scheme}://${admin_chat_domain}/ws/osichat/rooms/`);
|
|
|
|
osichatroomsSocket.onopen = function () {
|
|
console.log('WebSocket connection to rooms established');
|
|
osichatroomsSocket.send(JSON.stringify({
|
|
'event_type': 'set_client_type',
|
|
'client_type': 'website_admin',
|
|
'user_id': userId
|
|
}));
|
|
};
|
|
|
|
osichatroomsSocket.onmessage = function (e) {
|
|
const data = JSON.parse(e.data);
|
|
const leftDiv = document.getElementById('widgetLeftSide');
|
|
switch (data.event_type) {
|
|
case 'get_chats':
|
|
leftDiv.innerHTML = data.html;
|
|
appendInnerConversationScript(leftDiv);
|
|
break;
|
|
case 'new_update':
|
|
const roomsContainer = document.getElementById('chatrooms');
|
|
const chatRoomDiv = roomsContainer.querySelector(`.chat-room[data-roomid='${data.chatroom_id}']`);
|
|
|
|
if (chatRoomDiv) {
|
|
chatRoomDiv.remove(); // Remove the existing chat room div
|
|
}
|
|
// Insert the new chat room HTML at the top of the container
|
|
const newChatRoomDiv = document.createElement('div');
|
|
newChatRoomDiv.innerHTML = data.html;
|
|
roomsContainer.insertAdjacentElement('afterbegin', newChatRoomDiv.firstElementChild);
|
|
|
|
appendInnerConversationScript(leftDiv);
|
|
break;
|
|
|
|
default:
|
|
console.log('Unknown event type:', data.event_type);
|
|
}
|
|
};
|
|
|
|
osichatroomsSocket.onclose = function () {
|
|
console.log('WebSocket connection to rooms closed');
|
|
};
|
|
|
|
osichatroomsSocket.onerror = function (error) {
|
|
console.error('WebSocket error:', error);
|
|
};
|
|
}
|
|
|
|
getRooms(); |