195 useEffect(() => {
196 if (roomId) {
197 const fetchDefaultUsername = async () => {
198 try {
199 // First, check if there's a username in localStorage
202 setUsername(storedUsername);
203 } else {
204 // If not, fetch a default username from the server
205 const response = await fetch(`/default-username?room=${roomId}`);
206 if (response.ok) {
207 const defaultUsername = await response.text();
218 }
219 } catch (error) {
220 console.error("Error fetching default username:", error);
221 }
222 };
223
224 fetchDefaultUsername();
225 }
226 }, [roomId]);
230 const pollMessages = async () => {
231 try {
232 const response = await fetch(`/messages?room=${roomId}&language=${language}`);
233 if (response.ok) {
234 const newMessages = await response.json();
242 }
243 } catch (error) {
244 console.error("Error fetching messages:", error);
245 }
246 };
247
248 const fetchUsers = async () => {
249 try {
250 const response = await fetch(`/users?room=${roomId}`);
251 if (response.ok) {
252 const userList = await response.json();
254 }
255 } catch (error) {
256 console.error("Error fetching users:", error);
257 }
258 };
259
260 const fetchTypingUsers = async () => {
261 try {
262 const response = await fetch(`/typing-users?room=${roomId}`);
263 if (response.ok) {
264 const typingUsersList = await response.json();
266 }
267 } catch (error) {
268 console.error("Error fetching typing users:", error);
269 }
270 };
271
272 pollMessages();
273 fetchUsers();
274 fetchTypingUsers();
275 const messageIntervalId = setInterval(pollMessages, 2000);
276 const userIntervalId = setInterval(fetchUsers, 5000);
277 const typingIntervalId = setInterval(fetchTypingUsers, 1000);
278
279 return () => {
289 if (language !== "en") {
290 try {
291 const translatedMessage = await fetch("/translate-text", {
292 method: "POST",
293 headers: { "Content-Type": "application/json" },
315 if (inputMessage && roomId && username) {
316 try {
317 const response = await fetch("/send-message", {
318 method: "POST",
319 headers: { "Content-Type": "application/json" },
346 } else {
347 try {
348 const response = await fetch("/update-user", {
349 method: "POST",
350 headers: { "Content-Type": "application/json" },
403 if (roomId && username) {
404 try {
405 await fetch("/update-typing", {
406 method: "POST",
407 headers: { "Content-Type": "application/json" },