Site
- Add notif for new message - remove buttons "private" and "game" in chat - add function on button newConv in profilPage - fix camera who change position (2 to 1.5 in z axe) when a goal is scored - fix some bug in responses functions - add button chat in profil page and lobby page
This commit is contained in:
@ -6,7 +6,7 @@
|
||||
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/08/04 19:19:10 by edbernar #+# #+# */
|
||||
/* Updated: 2024/09/17 23:10:22 by edbernar ### ########.fr */
|
||||
/* Updated: 2024/09/21 22:41:48 by edbernar ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -15,13 +15,6 @@ import { showActualGameMessage } from "/static/javascript/liveChat/showActualGam
|
||||
import { showListUser } from "/static/javascript/liveChat/showUserList.js";
|
||||
import { userMeInfo } from "/static/javascript/typeResponse/typeLogin.js";
|
||||
|
||||
/*
|
||||
Todo (Eddy) :
|
||||
- add a function to "New conversation +"
|
||||
- game message when game will be implemented
|
||||
*/
|
||||
|
||||
let chatContent = null;
|
||||
let chatButton = null;
|
||||
let topChatHomeCross = null;
|
||||
|
||||
@ -46,66 +39,19 @@ class LiveChat
|
||||
|
||||
}
|
||||
|
||||
function addDefaultButton()
|
||||
{
|
||||
const newDiv = document.createElement("div");
|
||||
const newPrivateButton = document.createElement("h2");
|
||||
const newGameButton = document.createElement("h2");
|
||||
const divMessageListChatHome = document.createElement("div");
|
||||
|
||||
newDiv.setAttribute("id", "buttonTypeChatHome");
|
||||
newPrivateButton.textContent = "Private";
|
||||
newGameButton.textContent = "Game";
|
||||
newPrivateButton.setAttribute("id", "selected");
|
||||
newDiv.appendChild(newPrivateButton);
|
||||
newDiv.appendChild(newGameButton);
|
||||
document.getElementById("chatDiv").appendChild(newDiv);
|
||||
divMessageListChatHome.setAttribute("id", "messageListChatHome");
|
||||
document.getElementById("chatDiv").appendChild(divMessageListChatHome);
|
||||
|
||||
newPrivateButton.addEventListener("click", async () => {
|
||||
newGameButton.removeAttribute("id");
|
||||
newPrivateButton.setAttribute("id", "selected");
|
||||
await showListUser();
|
||||
});
|
||||
newGameButton.addEventListener("click", () => {
|
||||
newPrivateButton.removeAttribute("id");
|
||||
newGameButton.setAttribute("id", "selected");
|
||||
showActualGameMessage();
|
||||
});
|
||||
}
|
||||
|
||||
function removeButtonIfExist()
|
||||
{
|
||||
const divButtonTypeChatHome = document.getElementById("buttonTypeChatHome");
|
||||
|
||||
if (divButtonTypeChatHome)
|
||||
{
|
||||
divButtonTypeChatHome.remove();
|
||||
document.getElementById("messageListChatHome").remove();
|
||||
}
|
||||
}
|
||||
|
||||
async function showChatMenu()
|
||||
function showChatMenu()
|
||||
{
|
||||
const infoChat = document.getElementById("infoChat");
|
||||
|
||||
chatDiv.style.display = "flex";
|
||||
if (userMeInfo.id !== -1)
|
||||
{
|
||||
if (infoChat)
|
||||
infoChat.remove();
|
||||
removeButtonIfExist();
|
||||
addDefaultButton();
|
||||
await showListUser();
|
||||
}
|
||||
showListUser();
|
||||
}
|
||||
|
||||
function hideChatMenu()
|
||||
{
|
||||
console.log("hideChatMenu");
|
||||
chatDiv.style.display = "none";
|
||||
infoPanel.isOpen = false;
|
||||
}
|
||||
|
||||
export { LiveChat };
|
||||
export { LiveChat, showChatMenu };
|
@ -6,7 +6,7 @@
|
||||
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/08/04 19:17:54 by edbernar #+# #+# */
|
||||
/* Updated: 2024/08/26 00:40:11 by edbernar ### ########.fr */
|
||||
/* Updated: 2024/09/21 17:14:15 by edbernar ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -17,62 +17,46 @@ import { sendRequest } from "/static/javascript/websocket.js";
|
||||
|
||||
let savedButtons = [];
|
||||
|
||||
async function showPrivateChat(user)
|
||||
function showPrivateChat(user)
|
||||
{
|
||||
const divMessageListChatHome = document.getElementById("messageListChatHome");
|
||||
|
||||
sendRequest("get_private_list_message", {id: user.id});
|
||||
await waitForMessageList();
|
||||
infoPanel.id = user.id;
|
||||
infoPanel.isOpen = true;
|
||||
infoPanel.divMessage = divMessageListChatHome;
|
||||
await changeButton(user);
|
||||
await displayAllMessage(divMessageListChatHome);
|
||||
await displayInputBar(divMessageListChatHome, user);
|
||||
waitForMessageList().then(() => {
|
||||
infoPanel.id = user.id;
|
||||
infoPanel.isOpen = true;
|
||||
infoPanel.divMessage = divMessageListChatHome;
|
||||
changeButton(user);
|
||||
displayAllMessage(divMessageListChatHome);
|
||||
displayInputBar(divMessageListChatHome, user);
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
async function restoreButton()
|
||||
function changeButton(user)
|
||||
{
|
||||
const divButtonTypeChatHome = document.getElementById("buttonTypeChatHome");
|
||||
|
||||
divButtonTypeChatHome.innerHTML = '';
|
||||
savedButtons.forEach(element => {
|
||||
divButtonTypeChatHome.appendChild(element);
|
||||
});
|
||||
}
|
||||
|
||||
async function changeButton(user)
|
||||
{
|
||||
const divButtonTypeChatHome = document.getElementById("buttonTypeChatHome");
|
||||
const divMessageListChatHome = document.getElementById("messageListChatHome");
|
||||
const h2Username = document.createElement("h2");
|
||||
const h2UsernameNode = document.createTextNode(user.name);
|
||||
const div = document.createElement('div');
|
||||
let returnButton = null;
|
||||
let h2Button = null;
|
||||
let lenh2Button = 0;
|
||||
|
||||
h2Button = divButtonTypeChatHome.getElementsByTagName("h2");
|
||||
lenh2Button = h2Button.length;
|
||||
savedButtons.splice(0, savedButtons.length);
|
||||
for (let i = 0; i < lenh2Button; i++) {
|
||||
savedButtons.push(h2Button[0]);
|
||||
h2Button[0].remove();
|
||||
}
|
||||
h2Username.appendChild(h2UsernameNode);
|
||||
divButtonTypeChatHome.appendChild(h2Username);
|
||||
divButtonTypeChatHome .innerHTML += `
|
||||
divMessageListChatHome.before(div);
|
||||
div.innerHTML += `
|
||||
<p id="returnButton" style="margin: 8px 10px 0 0; text-align: right;">Return</p>
|
||||
`;
|
||||
h2Button[0].style.cursor = "default";
|
||||
div.setAttribute('id', 'buttonTypeChatHome');
|
||||
h2Username.appendChild(h2UsernameNode);
|
||||
returnButton = document.getElementById("returnButton");
|
||||
returnButton.before(h2Username);
|
||||
returnButton.style.cursor = "pointer";
|
||||
returnButton.addEventListener("click", () => {
|
||||
restoreButton();
|
||||
infoPanel.isOpen = false;
|
||||
showListUser();
|
||||
});
|
||||
}
|
||||
|
||||
async function displayAllMessage(divMessageListChatHome)
|
||||
function displayAllMessage(divMessageListChatHome)
|
||||
{
|
||||
let newDiv = null;
|
||||
let contentNode = null;
|
||||
@ -100,7 +84,7 @@ async function displayAllMessage(divMessageListChatHome)
|
||||
divMessageListChatHome.scrollTop = divMessageListChatHome.scrollHeight;
|
||||
}
|
||||
|
||||
async function displayInputBar(divMessageListChatHome, user)
|
||||
function displayInputBar(divMessageListChatHome, user)
|
||||
{
|
||||
let sendButton;
|
||||
let inputMessage;
|
||||
|
@ -6,7 +6,7 @@
|
||||
/* By: edbernar <edbernar@student.42angouleme. +#+ +:+ +#+ */
|
||||
/* +#+#+#+#+#+ +#+ */
|
||||
/* Created: 2024/08/04 19:21:10 by edbernar #+# #+# */
|
||||
/* Updated: 2024/08/30 16:36:37 by edbernar ### ########.fr */
|
||||
/* Updated: 2024/09/21 17:15:11 by edbernar ### ########.fr */
|
||||
/* */
|
||||
/* ************************************************************************** */
|
||||
|
||||
@ -16,45 +16,28 @@ import { userList } from "/static/javascript/typeResponse/typePrivateListUser.js
|
||||
import { showPrivateChat } from "/static/javascript/liveChat/showPrivateChat.js";
|
||||
import { sendRequest } from "/static/javascript/websocket.js";
|
||||
|
||||
async function showListUser() {
|
||||
function showListUser() {
|
||||
const buttons = document.getElementById('buttonTypeChatHome');
|
||||
const infoChat = document.getElementById("infoChat");
|
||||
const divMessageListChatHome = document.getElementById("messageListChatHome");
|
||||
let divUser;
|
||||
let userList;
|
||||
|
||||
sendRequest("get_private_list_user", {});
|
||||
await waitForUserList();
|
||||
divMessageListChatHome.style.height = "100%";
|
||||
divMessageListChatHome.style.paddingBottom = "10px";
|
||||
divMessageListChatHome.innerHTML = '';
|
||||
divMessageListChatHome.scrollTop = 0;
|
||||
if (JSON.stringify(userList) !== "{}")
|
||||
{
|
||||
userList.forEach(element => {
|
||||
let user = document.createElement("div");
|
||||
user.classList.add("user");
|
||||
user.innerHTML = `
|
||||
<div class="status ${element.status}">
|
||||
<img>
|
||||
</div>
|
||||
<h3></h3>
|
||||
`
|
||||
user.querySelector("img").src = element.pfp;
|
||||
user.querySelector("h3").innerText = element.name;
|
||||
divMessageListChatHome.appendChild(user);
|
||||
});
|
||||
}
|
||||
divMessageListChatHome.innerHTML += "<p id='newConversation' style='text-align: center; margin-top: 20px; cursor: pointer;'>New conversation +</p>";
|
||||
divUser = document.getElementsByClassName("user");
|
||||
for (let i = 0; i < divUser.length; i++) {
|
||||
divUser[i].addEventListener("click", async () => {
|
||||
await showPrivateChat(userList[i]);
|
||||
});
|
||||
}
|
||||
document.getElementById('newConversation').addEventListener('mouseup', () => {
|
||||
divMessageListChatHome.innerText = 'Loading...';
|
||||
sendRequest("get_all_list_user", {});
|
||||
waitForallListUser().then((listUser) => {
|
||||
divMessageListChatHome.innerText = 'User list :\n';
|
||||
listUser.forEach(element => {
|
||||
waitForUserList().then((userList) => {
|
||||
if (!userList.length)
|
||||
infoChat.innerText = "No conversation"
|
||||
else
|
||||
{
|
||||
divMessageListChatHome.style.height = "100%";
|
||||
divMessageListChatHome.style.paddingBottom = "10px";
|
||||
divMessageListChatHome.innerHTML = '';
|
||||
divMessageListChatHome.scrollTop = 0;
|
||||
if (infoChat)
|
||||
infoChat.remove();
|
||||
if (buttons)
|
||||
buttons.remove();
|
||||
userList.forEach(element => {
|
||||
let user = document.createElement("div");
|
||||
user.classList.add("user");
|
||||
user.innerHTML = `
|
||||
@ -63,12 +46,17 @@ async function showListUser() {
|
||||
</div>
|
||||
<h3></h3>
|
||||
`
|
||||
|
||||
user.querySelector("img").src = element.pfp;
|
||||
user.querySelector("h3").innerText = element.name;
|
||||
divMessageListChatHome.appendChild(user);
|
||||
})
|
||||
})
|
||||
});
|
||||
divUser = divMessageListChatHome.children;
|
||||
for (let i = 0; i < divUser.length; i++) {
|
||||
divUser[i].addEventListener("click", async () => {
|
||||
showPrivateChat(userList[i]);
|
||||
});
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user