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.
51 lines
1.9 KiB
JavaScript
51 lines
1.9 KiB
JavaScript
// WebSocket connection for new statuses
|
|
const ws_protocol = window.location.protocol === "https:" ? "wss" : "ws";
|
|
const newStatusesTimeSocketUrl = `${ws_protocol}://${window.location.host}/ws/update-statuses-time/`;
|
|
const newStatusesTimeSocket = new WebSocket(newStatusesTimeSocketUrl);
|
|
|
|
newStatusesTimeSocket.onopen = () => {
|
|
console.log('WebSocket connection to new statuses time established');
|
|
|
|
function sendUpdate() {
|
|
newStatusesTimeSocket.send(JSON.stringify({ 'event_type': 'update_statuses_time' }));
|
|
}
|
|
|
|
// Call sendUpdate every 1 minute (60000 milliseconds)
|
|
setInterval(sendUpdate, 60000);
|
|
// Call it immediately on load
|
|
sendUpdate();
|
|
};
|
|
|
|
newStatusesTimeSocket.onmessage = function(e) {
|
|
const data = JSON.parse(e.data);
|
|
|
|
if (data.event_type === 'update_statuses_time') {
|
|
const activityDiv = document.getElementById('activitiesContainer');
|
|
activityDiv.innerHTML = data.html;
|
|
|
|
// Update user activity containers based on online status
|
|
const onlineUsersIds = data.online_users_ids || [];
|
|
const userActivityContainers = document.querySelectorAll(".users-activities");
|
|
|
|
userActivityContainers.forEach(container => {
|
|
const userId = container.getAttribute("data-userId");
|
|
|
|
if (onlineUsersIds.map(id => id.toString()).includes(userId)) {
|
|
container.querySelector("#connected").classList.remove("hidden");
|
|
container.querySelector("#not-connected").classList.add("hidden");
|
|
} else {
|
|
container.querySelector("#connected").classList.add("hidden");
|
|
container.querySelector("#not-connected").classList.remove("hidden");
|
|
}
|
|
});
|
|
}
|
|
};
|
|
|
|
newStatusesTimeSocket.onclose = () => {
|
|
console.log('WebSocket connection to new statuses time closed');
|
|
};
|
|
|
|
newStatusesTimeSocket.onerror = (error) => {
|
|
console.log('WebSocket error:', error);
|
|
};
|