Skip to content

Commit 855deca

Browse files
committed
fixed displaying last messages + used O(1) method instead of O(n)
1 parent 3f8d143 commit 855deca

2 files changed

Lines changed: 28 additions & 3 deletions

File tree

‎chat-app/backEnd/server.js‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ app.post("/sendMessage", (req, res) => {
5353

5454
app.post("/reactMessage", (req, res) => {
5555
const { id, reaction } = req.body;
56-
const message = messages.find((msg) => msg.id === Number(id));
56+
const message = messages.get(Number(id));
5757

5858
if (!message || !["like", "dislike"].includes(reaction)) {
5959
return res

‎chat-app/frontEnd/script.js‎

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ const appServerURL = "http://localhost:3000/";
44

55
const currentUser = prompt("Enter your name:") || "Unknown";
66
let lastTimestamp = 0;
7+
let displayedMessages = [];
78

89
async function setup() {
910
await renderMessages();
@@ -47,14 +48,16 @@ async function setup() {
4748

4849
async function renderMessages() {
4950
const messages = await fetchMessages(lastTimestamp);
50-
const messagesContainer = document.querySelector(".chat-messages");
51-
messagesContainer.innerHTML = "";
51+
if (messages.length === 0) {
52+
return;
53+
}
5254

5355
if (messages.length > 0) {
5456
lastTimestamp = Math.max(lastTimestamp, ...messages.map((m) => m.timestamp));
5557
}
5658

5759
messages.sort((a, b) => a.timestamp - b.timestamp);
60+
displayedMessages.push(...messages);
5861
appendMessages(messages);
5962
}
6063

@@ -114,10 +117,32 @@ async function reactToMessage(id, reaction) {
114117
body: JSON.stringify({ id, reaction }),
115118
});
116119
const data = await response.json();
120+
121+
if (data.success && data.message) {
122+
updateMessageReaction(data.message);
123+
}
124+
117125
return data.success;
118126
} catch (error) {
119127
return false;
120128
}
121129
}
122130

131+
function updateMessageReaction(message) {
132+
const existingMessage = displayedMessages.find((m) => m.id === message.id);
133+
if (existingMessage) {
134+
Object.assign(existingMessage, message);
135+
}
136+
137+
const likeButton = document.querySelector(`.like-button[data-id="${message.id}"]`);
138+
const dislikeButton = document.querySelector(`.dislike-button[data-id="${message.id}"]`);
139+
140+
if (likeButton) {
141+
likeButton.textContent = `👍 ${message.likes || 0}`;
142+
}
143+
if (dislikeButton) {
144+
dislikeButton.textContent = `👎 ${message.dislikes || 0}`;
145+
}
146+
}
147+
123148
window.onload = setup;

0 commit comments

Comments
 (0)