Add admin challenge acceptance functionality: Implement adminAcceptChallenge method in ChallengeService, allowing admins to accept pending challenges. Update ChallengeManagement component to include a button for accepting challenges, enhancing admin capabilities and user feedback handling.
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m48s
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 4m48s
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
deleteChallenge,
|
||||
adminCancelChallenge,
|
||||
reactivateChallenge,
|
||||
adminAcceptChallenge,
|
||||
} from "@/actions/admin/challenges";
|
||||
import {
|
||||
Button,
|
||||
@@ -226,6 +227,29 @@ export default function ChallengeManagement() {
|
||||
});
|
||||
};
|
||||
|
||||
const handleAdminAccept = async (challengeId: string) => {
|
||||
if (
|
||||
!confirm(
|
||||
"Êtes-vous sûr de vouloir accepter ce défi à la place de l'utilisateur ?"
|
||||
)
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
startTransition(async () => {
|
||||
const result = await adminAcceptChallenge(challengeId);
|
||||
|
||||
if (result.success) {
|
||||
setSuccessMessage("Défi accepté avec succès");
|
||||
fetchChallenges();
|
||||
setTimeout(() => setSuccessMessage(null), 5000);
|
||||
} else {
|
||||
setErrorMessage(result.error || "Erreur lors de l'acceptation");
|
||||
setTimeout(() => setErrorMessage(null), 5000);
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (loading) {
|
||||
return (
|
||||
<div className="text-center text-pixel-gold py-8">Chargement...</div>
|
||||
@@ -376,6 +400,16 @@ export default function ChallengeManagement() {
|
||||
>
|
||||
Modifier
|
||||
</Button>
|
||||
{challenge.status === "PENDING" && (
|
||||
<Button
|
||||
onClick={() => handleAdminAccept(challenge.id)}
|
||||
variant="primary"
|
||||
size="sm"
|
||||
disabled={isPending}
|
||||
>
|
||||
Accepter le défi
|
||||
</Button>
|
||||
)}
|
||||
{challenge.status === "ACCEPTED" && (
|
||||
<Button
|
||||
onClick={() => setSelectedChallenge(challenge)}
|
||||
|
||||
Reference in New Issue
Block a user