- 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:
Kum1ta
2024-09-21 23:14:27 +02:00
parent 696447a0d1
commit d29c58ae42
17 changed files with 161 additions and 167 deletions

View File

@ -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 };

View File

@ -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;

View File

@ -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]);
});
}
}
});
}