feat: add membre

This commit is contained in:
2024-03-06 19:57:17 +01:00
parent 9615660101
commit bbc8c470c5
6 changed files with 148 additions and 1 deletions

View File

@@ -0,0 +1,19 @@
export function ConfirmDialog({title, message, onConfirm = () => {}, onCancel = () => {}, id = "confirm-delete"}) {
return <div className="modal fade" id={id} tabIndex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div className="modal-dialog">
<div className="modal-content">
<div className="modal-header">
{title && <h4 className="modal-title" id="myModalLabel">{title}</h4>}
</div>
<div className="modal-body">
{message}
</div>
<div className="modal-footer">
<button type="button" className="btn btn-default" data-dismiss="modal" data-bs-dismiss="modal" onClick={onCancel}>Annuler</button>
<a className="btn btn-danger btn-ok" data-bs-dismiss="modal" onClick={onConfirm}>Confirmer</a>
</div>
</div>
</div>
</div>
}

View File

@@ -6,6 +6,9 @@ import {CompteInfo} from "./CompteInfo.jsx";
import {PremForm} from "./PremForm.jsx";
import {InformationForm} from "./InformationForm.jsx";
import {LicenceCard} from "./LicenceCard.jsx";
import {toast} from "react-toastify";
import {apiAxios} from "../../../utils/Tools.js";
import {ConfirmDialog} from "../../../components/ConfirmDialog.jsx";
const vite_url = import.meta.env.VITE_URL;
@@ -16,6 +19,19 @@ export function MemberPage() {
const setLoading = useLoadingSwitcher()
const {data, error} = useFetch(`/member/${id}`, setLoading, 1)
const handleRm = () => {
toast.promise(
apiAxios.delete(`/member/${id}`),
{
pending: "Suppression du compte en cours...",
success: "Compte supprimé avec succès 🎉",
error: "Échec de la suppression du compte 😕"
}
).then(_ => {
navigate("/admin/member")
})
}
return <>
<h2>Page membre</h2>
<button type="button" className="btn btn-link" onClick={() => navigate("/admin/member")}>
@@ -39,6 +55,12 @@ export function MemberPage() {
<LoadingProvider><SelectCard/></LoadingProvider>
</div>
</div>
<div className="col" style={{textAlign: 'right', marginTop: '1em'}}>
<button className="btn btn-danger btn-sm" data-bs-toggle="modal" data-bs-target="#confirm-delete">Supprimer le compte
</button>
</div>
<ConfirmDialog title="Supprimer le compte" message="Êtes-vous sûr de vouloir supprimer ce compte ?"
onConfirm={handleRm}/>
</div>
</div>
</div>

View File

@@ -5,6 +5,9 @@ import {AxiosError} from "../../../components/AxiosError.jsx";
import {CompteInfo} from "./CompteInfo.jsx";
import {InformationForm} from "./InformationForm.jsx";
import {LicenceCard} from "./LicenceCard.jsx";
import {ConfirmDialog} from "../../../components/ConfirmDialog.jsx";
import {apiAxios} from "../../../utils/Tools.js";
import {toast} from "react-toastify";
const vite_url = import.meta.env.VITE_URL;
@@ -15,6 +18,19 @@ export function MemberPage() {
const setLoading = useLoadingSwitcher()
const {data, error} = useFetch(`/member/${id}`, setLoading, 1)
const handleRm = () => {
toast.promise(
apiAxios.delete(`/member/club/${id}`),
{
pending: "Suppression du compte en cours...",
success: "Compte supprimé avec succès 🎉",
error: "Échec de la suppression du compte 😕"
}
).then(_ => {
navigate("/club/member")
})
}
return <>
<h2>Page membre</h2>
<button type="button" className="btn btn-link" onClick={() => navigate("/club/member")}>
@@ -37,6 +53,12 @@ export function MemberPage() {
<LoadingProvider><SelectCard/></LoadingProvider>
</div>
</div>
<div className="col" style={{textAlign: 'right', marginTop: '1em'}}>
<button className="btn btn-danger btn-sm" data-bs-toggle="modal" data-bs-target="#confirm-delete">Supprimer le compte
</button>
</div>
<ConfirmDialog title="Supprimer le compte" message="Êtes-vous sûr de vouloir supprimer ce compte ?"
onConfirm={handleRm}/>
</div>
</div>
</div>