From 3f63e4a571972a0caabecac6b387bec2e18b02a2 Mon Sep 17 00:00:00 2001 From: Xamora Date: Tue, 9 Jan 2024 18:47:27 +0100 Subject: [PATCH] code more readable, and fix chat --- frontend/static/js/views/Search.js | 134 +++++++++++++++++------------ 1 file changed, 79 insertions(+), 55 deletions(-) diff --git a/frontend/static/js/views/Search.js b/frontend/static/js/views/Search.js index a07a5bc..a33d3b0 100644 --- a/frontend/static/js/views/Search.js +++ b/frontend/static/js/views/Search.js @@ -13,19 +13,19 @@ export default class extends AbstractView { let profiles = await client.profiles.all(); let search = document.getElementById("input_user"); - search.oninput = () => this.users(logged, profiles); + search.oninput = () => this.display_users(logged, profiles); let chat_input = document.getElementById("input_chat"); - //chat_input.addEventListener("keydown", this.chat_manager) + //chat_input.addEventListener("keydown", this.display_chat_manager) this.last_add_chat = undefined; - this.users(logged, profiles); - this.chat(logged, profiles); + this.display_users(logged, profiles); + this.display_chat(logged, profiles); } - async users(logged, profiles) { + async display_users(logged, profiles) { let search = document.getElementById("input_user").value.toLowerCase(); @@ -50,27 +50,29 @@ export default class extends AbstractView { // space new_user.appendChild(document.createTextNode(" ")); - // chat + // button chat if (logged && client.me.id != user.id) { let add_chat = document.createElement("a"); add_chat.id = "add_chat_off"; add_chat.onclick = async () => { if (client.channels.channel != undefined) { + + // Permet de savoir si c'est le même channel + // Check to know if it's the same channel client.channels.channel.members_id.forEach((member_id) => { - if (member_id == user.user_id) + if (member_id == user.id) client.channels.channel = undefined; }); - if (client.channels.channel == undefined) { add_chat.id = "add_chat_off"; this.last_add_chat = undefined; - return await this.hideChat(); + return await this.hide_chat(); } await client.channels.channel.disconnect(); } - client.channels.channel = await client.channels.createChannel([client.me.id , user.id], () => this.chat(logged, profiles)); - this.chat(logged, profiles); + client.channels.channel = await client.channels.createChannel([client.me.id , user.id], () => this.reload_display_messages()); + this.display_chat(logged, profiles); if (this.last_add_chat != undefined) this.last_add_chat.id = "add_chat_off"; this.last_add_chat = add_chat; @@ -98,9 +100,9 @@ export default class extends AbstractView { } - async chat(logged, profiles) + async display_chat(logged, profiles) { - let reloads = ["members"]; + let reloads = ["members", "messages"]; reloads.forEach(reload => { if (document.getElementById(reload) != undefined) document.getElementById(reload).remove(); @@ -117,46 +119,11 @@ export default class extends AbstractView { chats.appendChild(chat); } - - // diconsole.log("CACA")v des messages - let messages = document.getElementById("messages"); - if (messages == null) { - messages = document.createElement("div"); - messages.id = "messages"; - if (document.getElementById("input_chat") == null) - chat.appendChild(messages); - else - document.getElementById("input_chat").before(messages); - } + // nom des membres du channel + let members = await this.display_members(chat, profiles); - // les messages, réecriture seulement du dernier - let i = 0; - client.channels.channel.messages.forEach((message) => { - if (messages.children[i] == null || message.content != messages.children[i].innerText) { - let text = document.createElement("p"); - let date = new Date(message.time); - text.title = date.toLocaleString("fr-FR"); - text.appendChild(document.createTextNode(message.content)); - text.id = message.author_id === client.me.id ? "you" : "other"; - - messages.appendChild(text); - } - i++; - }); - - // nom des membres du chat - let members = document.createElement("h2"); - members.id = "members"; - let usernames = ""; - client.channels.channel.members_id.forEach((member_id) => { - if (member_id != client.me.user_id) { - if (usernames.length > 0) - usernames += ", "; - usernames += (profiles.filter(user => user.id == member_id)[0].username); - } - }); - members.appendChild(document.createTextNode(usernames)); - messages.before(members); + // L'affiche des messages + let messages = await this.display_messages(chat); // Input pour rentrer un message let chat_input = document.getElementById("input_chat") || document.createElement("input"); @@ -177,8 +144,7 @@ export default class extends AbstractView { if (member_id != client.me.id) receivers_id.push(profiles.filter(user => user.id == member_id)[0].id); }); - await client.channels.channel.sendMessageChannel(chat_text, receivers_id) - + await client.channels.channel.sendMessageChannel(chat_text, receivers_id); // Reset chat_input.value = ""; } @@ -200,7 +166,65 @@ export default class extends AbstractView { } - async hideChat() { + async display_messages(chat) { + + let messages = document.createElement("div"); + + messages.id = "messages"; + chat.appendChild(messages); + + // les messages, réecriture seulement du dernier + client.channels.channel.messages.forEach((message) => { + let text = document.createElement("p"); + let date = new Date(message.time); + text.title = date.toLocaleString("fr-FR"); + text.appendChild(document.createTextNode(message.content)); + text.id = message.author_id === client.me.id ? "you" : "other"; + + messages.appendChild(text); + }); + + return messages + } + + async reload_display_messages() { + let messages = document.getElementById("messages"); + + let i = 0; + client.channels.channel.messages.forEach((message) => { + if (messages.children[i] == null || message.content != messages.children[i].innerText) { + let text = document.createElement("p"); + let date = new Date(message.time); + text.title = date.toLocaleString("fr-FR"); + text.appendChild(document.createTextNode(message.content)); + text.id = message.author_id === client.me.id ? "you" : "other"; + + messages.appendChild(text); + } + i++; + }); + + messages.scrollTop = messages.scrollHeight; + } + + async display_members(chat, profiles) { + let members = document.createElement("h2"); + members.id = "members"; + let usernames = ""; + client.channels.channel.members_id.forEach((member_id) => { + if (member_id != client.me.id) { + if (usernames.length > 0) + usernames += ", "; + usernames += (profiles.filter(user => user.id == member_id)[0].username); + } + }); + members.appendChild(document.createTextNode(usernames)); + chat.appendChild(members); + + return members + } + + async hide_chat() { let closes = ["chat", "invite"] closes.forEach(close => {