merge with Xamora

This commit is contained in:
Xamora 2024-01-09 18:48:10 +01:00
commit 56d352fead

View File

@ -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 => {