speakmore-2.0/static/js/notification.js
2024-09-10 11:53:00 +02:00

58 lines
1.8 KiB
JavaScript

document.addEventListener('DOMContentLoaded', (event) => {
const socket = io();
let isConnected = true;
function checkConnection() {
socket.emit('ping');
}
socket.on('pong', function () {
isConnected = true;
});
setInterval(() => {
if (!isConnected) {
window.location.reload();
}
isConnected = false;
checkConnection();
}, 3000);
socket.on('connect', () => {
isConnected = true;
});
socket.on('disconnect', () => {
isConnected = false;
window.location.reload();
});
// Function to check if the user is focused on the website
function isUserFocused() {
return document.hasFocus();
}
// Function to check if the user is in the same chat or group chat
function isUserInSameChat(sender, receiverId, groupId) {
const currentChatUserId = document.getElementById('current-chat-user-id');
const currentGroupId = document.getElementById('current-group-id');
return (currentChatUserId && currentChatUserId.value == receiverId) || (currentGroupId && currentGroupId.value == groupId);
}
socket.on('new_message', (data) => {
const { sender, message, timestamp, receiver_id } = data;
if (!isUserInSameChat(sender, receiver_id, null) || !isUserFocused()) {
// Display notification logic here
console.log(`New message from ${sender}: ${message}`);
}
});
socket.on('new_group_message', (data) => {
const { sender, message, timestamp, group_id } = data;
if (!isUserInSameChat(sender, null, group_id) || !isUserFocused()) {
// Display notification logic here
console.log(`New group message from ${sender}: ${message}`);
}
});
});