récupération modifs dev sur new branch
This commit is contained in:
1 parent
cab258ff51
commit
a90d52b44b
5 files changed
+107
-21
No files matched your search
@@ -1 +0,0 @@
|
|||||||
VITE_API_URL=
|
|
||||||
@@ -1,38 +1,61 @@
|
|||||||
import React from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import Button from "../ui/button/button";
|
import Button from "../ui/button/button";
|
||||||
import styles from "./PendingMembers.module.css";
|
import styles from "./PendingMembers.module.css";
|
||||||
|
import getInvalidUsers from "../../utils/users/getUserToValidate";
|
||||||
|
import getUserById from "../../utils/users/getUserById";
|
||||||
|
|
||||||
function pendingMembers() {
|
function pendingMembers() {
|
||||||
const pendingMembers = [
|
const [pendingMembers, setPendingMembers] = useState([]);
|
||||||
{ name: "Antoine Ordonneau" },
|
const [loading, setLoading] = useState(true);
|
||||||
{ name: "Giovanni Josserand" },
|
|
||||||
{ name: "Quentin T'Jampens" },
|
|
||||||
{ name: "Quentin T'Jampens" },
|
|
||||||
{ name: "Quentin T'Jampens" },
|
|
||||||
{ name: "Quentin T'Jampens" },
|
|
||||||
{ name: "Quentin T'Jampens" }
|
|
||||||
];
|
|
||||||
|
|
||||||
const handleValidate = (name) => {
|
useEffect(() => {
|
||||||
console.log(`Valider ${name}`);
|
const fetchPendingMembers = async () => {
|
||||||
|
const userIds = await getInvalidUsers();
|
||||||
|
console.log("IDs reçus :", userIds);
|
||||||
|
|
||||||
|
if (userIds && userIds.length > 0) {
|
||||||
|
const usersWithDetails = await Promise.all(
|
||||||
|
userIds.map(async (id) => {
|
||||||
|
const user = await getUserById(id);
|
||||||
|
console.log("Utilisateur récupéré :", user);
|
||||||
|
return user;
|
||||||
|
})
|
||||||
|
);
|
||||||
|
|
||||||
|
console.log("Utilisateurs avec détails :", usersWithDetails);
|
||||||
|
setPendingMembers(usersWithDetails.filter(user => user !== null));
|
||||||
|
}
|
||||||
|
setLoading(false);
|
||||||
|
};
|
||||||
|
fetchPendingMembers();
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
const handleValidate = async (id) => {
|
||||||
|
console.log(`Valider l'utilisateur ID: ${id}`);
|
||||||
|
setPendingMembers(pendingMembers.filter(member => member.id !== id));
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleReject = (name) => {
|
const handleReject = async (id) => {
|
||||||
console.log(`Refuser ${name}`);
|
console.log(`Refuser l'utilisateur ID: ${id}`);
|
||||||
|
setPendingMembers(pendingMembers.filter(member => member.id !== id));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (loading) {
|
||||||
|
return <div>Chargement des membres en attente...</div>;
|
||||||
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className={`${styles.rightBlock} glassCard`}>
|
<div className={`${styles.rightBlock} glassCard`}>
|
||||||
<h2>Membres en attente de validation</h2>
|
<h2>Membres en attente de validation</h2>
|
||||||
<div className={styles.membersContainer}>
|
<div className={styles.membersContainer}>
|
||||||
{pendingMembers.map((member, index) => (
|
{pendingMembers.map((member) => (
|
||||||
<div key={index} className={`glassCard ${styles.memberCard}`}>
|
<div key={member.id} className={`glassCard ${styles.memberCard}`}>
|
||||||
<p>{member.name}</p>
|
<p>{member.name} {member.lastname}</p>
|
||||||
<div className={styles.buttonGroup}>
|
<div className={styles.buttonGroup}>
|
||||||
<Button onClick={() => handleValidate(member.name)} variant="primary">
|
<Button onClick={() => handleValidate(member.id)} variant="primary">
|
||||||
Valider
|
Valider
|
||||||
</Button>
|
</Button>
|
||||||
<Button onClick={() => handleReject(member.name)} variant="danger">
|
<Button onClick={() => handleReject(member.id)} variant="danger">
|
||||||
Refuser
|
Refuser
|
||||||
</Button>
|
</Button>
|
||||||
</div>
|
</div>
|
||||||
@@ -42,5 +65,4 @@ function pendingMembers() {
|
|||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default pendingMembers;
|
export default pendingMembers;
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
export default async function deleteUser(userId) {
|
||||||
|
try {
|
||||||
|
const res = await fetch(`http://${import.meta.env.VITE_API_URL}/api/users/${userId}`, {
|
||||||
|
method: 'DELETE',
|
||||||
|
credentials: 'include',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!res.ok) {
|
||||||
|
throw new Error(`Erreur serveur : ${res.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await res.json();
|
||||||
|
return data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Erreur lors de la suppression :', err);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
export default async function getUserToValidate() {
|
||||||
|
try {
|
||||||
|
const res = await fetch(`http://${import.meta.env.VITE_API_URL}/api/users/invalid`, {
|
||||||
|
method: 'GET',
|
||||||
|
credentials: 'include',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!res.ok) {
|
||||||
|
throw new Error(`Erreur serveur : ${res.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await res.json();
|
||||||
|
return data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Erreur :', err);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
export default async function validateUser(userId) {
|
||||||
|
try {
|
||||||
|
const res = await fetch(`http://${import.meta.env.VITE_API_URL}/api/users/${userId}/validate`, {
|
||||||
|
method: 'POST',
|
||||||
|
credentials: 'include',
|
||||||
|
headers: {
|
||||||
|
'Accept': 'application/json',
|
||||||
|
'Content-Type': 'application/json',
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!res.ok) {
|
||||||
|
throw new Error(`Erreur serveur : ${res.status}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
const data = await res.json();
|
||||||
|
return data;
|
||||||
|
} catch (err) {
|
||||||
|
console.error('Erreur lors de la validation :', err);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in new issue
Block a user