11534 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous

Dans le navigateur localhost:3000/Profil.html j’ai un petit souci quand, dans la partie liste d’amis de l’administrateur, je clique sur « envoyer une invitation », « accepter l’invitation » et « supprimer », rien ne fonctionne. Pouvez-vous m’aider SVP ? Merci à tous : Voici mon html
<!--Liste d'amis de l'administrateur-->
    <div class="container mt-5">
      <div class="row">
        <div class="col-md-8 offset-md-2">
          <div class="card">
            <div class="card-body">
              <h5 class="card-title">Liste des Amis de l'administrateur</h5>
              <div id="friendsList" class="row"></div>
            </div>
            <!--Bouton pour supprimer un ami de sa liste d'amis-->
            <div class="col-md-4">
              <div class="card mb-4">
                <img
                  src="assets/Edouard.png"
                  class="card-img-top"
                  alt="Photo de profil"
                />
 
                <div class="card-body">
                  <h5 class="card-title">
                    <a
                      href="#"
                      class="friend-link"
                      data-friend-id="ID_DU_MEMBRE"
                      >Pseudonyme</a
                    >
                  </h5>
                  <p class="card-text">Nom et Prénom</p>
                  <button
                    class="btn btn-primary btn-sm sendFriendRequestBtn"
                    data-friend-id="ID_DU_MEMBRE"
                  >
                    Envoyer une invitation
                  </button>
                  <!--Acceptation de l'ami à la liste d'amis de l'administrateur -->
                  <button
                    class="btn btn-success btn-sm acceptFriendRequestBtn"
                    data-friend-id="ID_DU_MEMBRE"
                  >
                    Accepter l'invitation
                  </button>
 
                  <button
                    class="btn btn-danger btn-sm deleteFriendBtn"
                    data-friend-id="ID_DU_MEMBRE"
                  >
                    Supprimer
                  </button>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!--Confirmation du message-->
      <div class="container mt-3">
        <div
          class="alert alert-success d-none"
          id="friendRequestSuccessmessage"
        >
          Demande d'ami envoyée réussie!
        </div>
        <!--Acceptation de l'ami-->
        <div
          class="alert alert-success d-none"
          id="friendRequestAcceptedMessage"
        >
          L'ami a été accepté!
        </div>
      </div>
    </div>
et javascript
// Fonction pour chargement et affichage de la liste d'amis de l'administrateur
document.addEventListener("DOMContentLoaded", function () {
const friendsList = document.getElementById("friendsList");
// Fonction pour chargement et affichage des demandes d'amis
const friendRequestsList = document.getElementById("friendRequestsList");
 
async function loadFriends() {
try {
const response = await fetch("http://localhost:3000/api/friends", {
method: "GET",
headers: {
"Content-Type": "application/json",
},
});
if (!response.ok) {
console.warn("Problème pour obtenir la liste des amis");
alert(
"Problème pour obtenir la liste d'amis. Veuillez réessayer plus tard "
);
return;
}
const data = await response.json();
friendsList.innerHTML = "";
friendRequestsList.innerHTML = "";
 
if (Array.isArray(data.friends)) {
data.friends.forEach((friend) => {
const friendItem = document.createElement("div");
friendItem.classList.add("col-md-4");
friendItem.innerHTML = \\`<div class="card mb-4"><img class="card-img-top" alt="Photo de profil" src="${friend.profilePictureUrl || "assets/Edouard.png"}"><img class="card-img-top" alt="Photo de profil" src="${friend.profilePictureUrl || "assets/Rose.png"}"><div class="card-body"><h5 class="card-title">${friend.username}</h5><p class="card-text">${friend.fullName}</p>${friend.status === "confirmé"? \<button class="btn btn-danger btn-sm deleteFriendBtn » data-friend-id="${friend.\_id}">Supprimer</button>' : '<button class="btn btn-primary btn-sm acceptFriendRequestBtn » data-friend-id="${friend.\_id}">Accepter l’invitation</button><button class="btn btn-primary btn-sm ignoreFriendRequestBtn » data-friend-id="${friend.\_id}">Ignorer l’invitation</button>'}</div></div>' ; if (friend.status === « confirmé ») {friendsList.appendChild(friendItem) ;} else {friendRequestsList.appendChild(friendItem) ;}}) ; `
 
// Gestionnaire d'événements pour les boutons de suppression de la liste d'amis de l'administrateur
document.querySelectorAll(".deleteFriendBtn").forEach((button) => {
button.addEventListener("click", async function () {
const friendId = this.getAttribute("data-friend-id");
if (confirm("Etes vous certain de supprimer cet ami?")) {
try {
const response = await fetch(
\http://localhost:3000/api/friends/${friendId}',{method : « DELETE »,headers : {"Content-Type » : « application/json »,},}) ; const data = attendre response.json() ; if (response.ok) {// Message de confirmationconst successMessage = document.getElementById(« friendRemovedMessage ») ; successMessage.classList.remove(« d-none ») ; setTimeout(() => {successMessage.classList.add(« d-none ») ;}, 3000) ; alert(« Ami supprimé avec succès ») ; loadFriends() ;} else {alert(« Erreur lors de la suppression de l’ami : " + data.message) ;}} catch (error) {console.error(« Erreur lors de la suppression de l’ami : « ,error) ; alert(« Erreur lors de la suppression de l’ami : " + error.message) ;}}}) ;}) ;} else {alert(« Erreur lors de la récupération des amis : " + data.message) ;}} catch (error) {console.error(« Erreur lors de la récupération des amis : », error) ; alert(« Erreur lors de la récupération des amis : " + error.message) ;}}`
 
loadFriends();
});