Skip to content

Commit cb09bb9

Browse files
app.js update
1 parent 519ffc8 commit cb09bb9

1 file changed

Lines changed: 54 additions & 17 deletions

File tree

chat-app/frontend/app.js

Lines changed: 54 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,79 @@
11
document.addEventListener("DOMContentLoaded", () => {
22
const messagesList = document.getElementById("messages-list");
33
const form = document.getElementById("message-form");
4-
const input = document.getElementById("message-input");
4+
const messageInput = document.getElementById("message-input");
55
const usernameInput = document.getElementById("username-input");
66

77
const BACKEND_URL = "https://zabihollah-namazi-chat-app-backend.hosting.codeyourfuture.io";
88

99
async function loadMessages() {
10-
const res = await fetch(BACKEND_URL);
10+
try {
11+
const res = await fetch(BACKEND_URL);
12+
13+
if (!res.ok) {
14+
throw new Error(`HTTP error: ${res.status}`);
15+
}
1116
const messages = await res.json();
1217

1318
messagesList.innerHTML = "";
1419

1520
messages.forEach((msg) => {
1621
const li = document.createElement("li");
17-
li.innerHTML = `
18-
<div><strong>${msg.username}</strong></div>
19-
<div>${msg.text}</div>
20-
<small>${msg.timeStamp}</small>
21-
`;
22+
const usernameDiv = document.createElement("div");
23+
const strong = document.createElement("strong");
24+
strong.textContent = msg.username;
25+
26+
usernameDiv.appendChild(strong);
27+
28+
const textDiv = document.createElement("div");
29+
textDiv.textContent = msg.text;
30+
31+
const time = document.createElement("small");
32+
time.textContent = msg.timeStamp;
33+
34+
li.appendChild(usernameDiv);
35+
li.appendChild(textDiv);
36+
li.appendChild(time);
2237
messagesList.appendChild(li);
2338
});
39+
} catch (err) {
40+
console.error("Failed to load messages:", err);
41+
messagesList.innerHTML = "<li>Failed to load messages</li>";
42+
}
2443
}
2544

2645
form.addEventListener("submit", async (e) => {
2746
e.preventDefault();
2847

29-
await fetch(BACKEND_URL, {
30-
method: "POST",
31-
headers: { "Content-Type": "application/json" },
32-
body: JSON.stringify({
33-
username: usernameInput.value,
34-
text: input.value,
35-
}),
36-
});
48+
const username = usernameInput.value.trim();
49+
const text = messageInput.value.trim();
50+
51+
//VALIDATION
52+
if (!username || !text) {
53+
alert("Username and message cannot be empty");
54+
return;
55+
}
56+
57+
try {
58+
const res = await fetch(BACKEND_URL, {
59+
method: "POST",
60+
headers: { "Content-Type": "application/json" },
61+
body: JSON.stringify({ username, text }),
62+
});
63+
64+
// HANDLE SERVER ERRORS
65+
if (!res.ok) {
66+
const error = await res.json();
67+
throw new Error(error.error || "Failed to send message");
68+
}
69+
70+
messageInput.value = "";
71+
loadMessages();
3772

38-
input.value = "";
39-
loadMessages();
73+
} catch (err) {
74+
console.error("Send failed:", err);
75+
alert("Failed to send message");
76+
}
4077
});
4178

4279
loadMessages();

0 commit comments

Comments
 (0)