From ff020fe0d1dcd3758b9b6ec49caf07a6775e6fa9 Mon Sep 17 00:00:00 2001 From: Naddeo Eddy Date: Sun, 15 Dec 2024 14:47:49 +0100 Subject: [PATCH] Better deleted messages --- app/Http/Controllers/ChatController.php | 9 ----- resources/views/dashboard.blade.php | 46 ++++++++++--------------- routes/web.php | 1 - 3 files changed, 19 insertions(+), 37 deletions(-) diff --git a/app/Http/Controllers/ChatController.php b/app/Http/Controllers/ChatController.php index 7a79ed3..6342220 100644 --- a/app/Http/Controllers/ChatController.php +++ b/app/Http/Controllers/ChatController.php @@ -228,13 +228,4 @@ public function deleteMessage($discussionId, $messageId) return response()->json(['message' => 'Message deleted successfully.']); } - - public function getDeletedMessages($chatId) -{ - $deletedMessages = Message::onlyTrashed() - ->where('discussion_id', $chatId) - ->pluck('id'); - - return response()->json(['deletedMessages' => $deletedMessages]); -} } diff --git a/resources/views/dashboard.blade.php b/resources/views/dashboard.blade.php index 5cc0a9e..0537f04 100644 --- a/resources/views/dashboard.blade.php +++ b/resources/views/dashboard.blade.php @@ -62,6 +62,7 @@ function loadChat(chatId, discussionName, discussionPicture, newOpening = true) .then(response => response.json()) .then(data => { let newMessages = []; + let deletedMessages = []; // Si la liste de tout les messages correspond à la liste actuelle if (JSON.stringify(allMessages) === JSON.stringify(data.messages)) { return; @@ -73,6 +74,9 @@ function loadChat(chatId, discussionName, discussionPicture, newOpening = true) newMessages = data.messages.filter(message => !allMessages.some(m => m.id === message.id)); } + // Récupérer la liste des messages supprimés + deletedMessages = allMessages.filter(message => !data.messages.some(m => m.id === message.id)); + // Récupérer la position dans le scroll et vérifier si on est tout en bas // Utile pour savoir si on doit défiler jusqu'en bas après l'ajout des nouveaux messages ou si l'utilisateur est entrain de consulter des anciens messages const isAtBottom = messagesContainer.scrollHeight - messagesContainer.scrollTop <= messagesContainer.clientHeight + 0.6; @@ -156,6 +160,14 @@ class="ml-2 text-red-500 hover:text-red-700 focus:outline-none" messagesContainer.appendChild(messageElement); }); + // Parcourir les messages supprimés et enlever la div du message correspondant + deletedMessages.forEach(message => { + const messageElement = document.getElementById(`message-div-${message.id}`); + if (messageElement) { + messageElement.innerHTML = `

Ce message a été supprimé.

`; + } + }); + // Mettre à jour la liste de tout les messages allMessages = data.messages; @@ -178,34 +190,14 @@ class="ml-2 text-red-500 hover:text-red-700 focus:outline-none" } function startAutoRefresh(intervalTime = 5000) { - if (interval) clearInterval(interval); - - interval = setInterval(() => { - if (currentChatId) { - loadChat(currentChatId, null, null, false); + if (interval) clearInterval(interval); - fetch(`/chat/${currentChatId}/deleted-messages`, { - method: 'GET', - headers: { - 'X-Requested-With': 'XMLHttpRequest', - 'X-CSRF-TOKEN': '{{ csrf_token() }}' - } - }) - .then(response => response.json()) - .then(data => { - const deletedMessages = data.deletedMessages || []; - - deletedMessages.forEach(messageId => { - const messageElement = document.getElementById(`message-div-${messageId}`); - if (messageElement) { - messageElement.innerHTML = `

Ce message a été supprimé.

`; - } - }); - }) - .catch(error => console.error('Erreur lors de la récupération des suppressions:', error)); - } - }, intervalTime); -} + interval = setInterval(() => { + if (currentChatId) { + loadChat(currentChatId, null, null, false); + } + }, intervalTime); + } function sendMessage() { const messageContent = document.getElementById('message-content').value; diff --git a/routes/web.php b/routes/web.php index ef88de9..edd6be5 100644 --- a/routes/web.php +++ b/routes/web.php @@ -25,7 +25,6 @@ Route::post('/chat/{discussion}/capsule', [ChatController::class, 'storeCapsule']); Route::delete('/chat/{discussion}/leave', [ChatController::class, 'leaveChat']); Route::delete('/chat/{discussion}/{message}/delete', [ChatController::class, 'deleteMessage']); - Route::get('/chat/{chatId}/deleted-messages', [ChatController::class, 'getDeletedMessages']); Route::post('/chats', [ChatController::class, 'storeChat'])->name('chats.store'); Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit'); Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');