diff --git a/index.php b/index.php index e717e65..450fa80 100644 --- a/index.php +++ b/index.php @@ -82,27 +82,29 @@ $servers = get_user_servers($user_id); let activeServerId = null; let activeChannelId = null; + let messagePollingInterval = null; servers.forEach(server => { server.addEventListener('click', function() { const serverId = this.dataset.serverId; if (serverId === activeServerId) return; - // Update active state for server icons servers.forEach(s => s.classList.remove('active')); this.classList.add('active'); activeServerId = serverId; - activeChannelId = null; // Reset channel selection + activeChannelId = null; + if (messagePollingInterval) { + clearInterval(messagePollingInterval); + messagePollingInterval = null; + } - // Clear UI serverNameEl.textContent = 'Chargement...'; channelsListEl.innerHTML = ''; messagesListEl.innerHTML = '
Aucun canal trouvé.
'; @@ -140,13 +141,12 @@ $servers = get_user_servers($user_id); if (channelId === activeChannelId) return; activeChannelId = channelId; - // Update active state for channel list + if (messagePollingInterval) { + clearInterval(messagePollingInterval); + } + document.querySelectorAll('.channel').forEach(c => { - if (c.dataset.channelId === channelId.toString()) { - c.classList.add('active'); - } else { - c.classList.remove('active'); - } + c.classList.toggle('active', c.dataset.channelId === channelId.toString()); }); channelNameEl.textContent = channelName; @@ -157,39 +157,47 @@ $servers = get_user_servers($user_id); messageInput.focus(); fetchMessages(channelId); + messagePollingInterval = setInterval(() => fetchMessages(channelId), 3000); } function fetchMessages(channelId) { + const wasScrolledToBottom = messagesListEl.scrollHeight - messagesListEl.clientHeight <= messagesListEl.scrollTop + 1; + fetch(`get_messages.php?channel_id=${channelId}`) .then(response => response.json()) .then(data => { - messagesListEl.innerHTML = ''; + let newHTML = ''; if (data.error) { - messagesListEl.innerHTML = `${data.error}
`; - return; - } - if (data.length > 0) { + newHTML = `${data.error}
`; + } else if (data.length > 0) { data.forEach(msg => { - const msgEl = document.createElement('div'); - msgEl.classList.add('message'); - msgEl.innerHTML = ` - -