Refactor management components to remove loading state: Eliminate unused loading state and related conditional rendering from ChallengeManagement, EventManagement, FeedbackManagement, HouseManagement, and UserManagement components, simplifying the code and improving readability.
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m43s
All checks were successful
Deploy with Docker Compose / deploy (push) Successful in 3m43s
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useEffect, useState, useTransition } from "react";
|
import { useState, useTransition } from "react";
|
||||||
import {
|
import {
|
||||||
validateChallenge,
|
validateChallenge,
|
||||||
rejectChallenge,
|
rejectChallenge,
|
||||||
@@ -48,7 +48,6 @@ interface ChallengeManagementProps {
|
|||||||
|
|
||||||
export default function ChallengeManagement({ initialChallenges }: ChallengeManagementProps) {
|
export default function ChallengeManagement({ initialChallenges }: ChallengeManagementProps) {
|
||||||
const [challenges, setChallenges] = useState<Challenge[]>(initialChallenges);
|
const [challenges, setChallenges] = useState<Challenge[]>(initialChallenges);
|
||||||
const [loading, setLoading] = useState(false);
|
|
||||||
const [selectedChallenge, setSelectedChallenge] = useState<Challenge | null>(
|
const [selectedChallenge, setSelectedChallenge] = useState<Challenge | null>(
|
||||||
null
|
null
|
||||||
);
|
);
|
||||||
@@ -260,12 +259,6 @@ export default function ChallengeManagement({ initialChallenges }: ChallengeMana
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
if (loading) {
|
|
||||||
return (
|
|
||||||
<div className="text-center text-pixel-gold py-8">Chargement...</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (challenges.length === 0) {
|
if (challenges.length === 0) {
|
||||||
return <div className="text-center text-gray-400 py-8">Aucun défi</div>;
|
return <div className="text-center text-gray-400 py-8">Aucun défi</div>;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useState, useEffect, useTransition } from "react";
|
import { useState, useTransition } from "react";
|
||||||
import { calculateEventStatus } from "@/lib/eventStatus";
|
import { calculateEventStatus } from "@/lib/eventStatus";
|
||||||
import { createEvent, updateEvent, deleteEvent } from "@/actions/admin/events";
|
import { createEvent, updateEvent, deleteEvent } from "@/actions/admin/events";
|
||||||
import {
|
import {
|
||||||
@@ -98,7 +98,6 @@ interface EventManagementProps {
|
|||||||
|
|
||||||
export default function EventManagement({ initialEvents }: EventManagementProps) {
|
export default function EventManagement({ initialEvents }: EventManagementProps) {
|
||||||
const [events, setEvents] = useState<Event[]>(initialEvents);
|
const [events, setEvents] = useState<Event[]>(initialEvents);
|
||||||
const [loading, setLoading] = useState(false);
|
|
||||||
const [editingEvent, setEditingEvent] = useState<Event | null>(null);
|
const [editingEvent, setEditingEvent] = useState<Event | null>(null);
|
||||||
const [isCreating, setIsCreating] = useState(false);
|
const [isCreating, setIsCreating] = useState(false);
|
||||||
const [saving, setSaving] = useState(false);
|
const [saving, setSaving] = useState(false);
|
||||||
@@ -304,10 +303,6 @@ export default function EventManagement({ initialEvents }: EventManagementProps)
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
if (loading) {
|
|
||||||
return <div className="text-center text-gray-400 py-8">Chargement...</div>;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
<div className="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3 mb-4">
|
<div className="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3 mb-4">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useState, useEffect } from "react";
|
import { useState } from "react";
|
||||||
import {
|
import {
|
||||||
addFeedbackBonusPoints,
|
addFeedbackBonusPoints,
|
||||||
markFeedbackAsRead,
|
markFeedbackAsRead,
|
||||||
@@ -49,7 +49,6 @@ export default function FeedbackManagement({
|
|||||||
}: FeedbackManagementProps) {
|
}: FeedbackManagementProps) {
|
||||||
const [feedbacks, setFeedbacks] = useState<Feedback[]>(initialFeedbacks);
|
const [feedbacks, setFeedbacks] = useState<Feedback[]>(initialFeedbacks);
|
||||||
const [statistics, setStatistics] = useState<EventStatistics[]>(initialStatistics);
|
const [statistics, setStatistics] = useState<EventStatistics[]>(initialStatistics);
|
||||||
const [loading, setLoading] = useState(false);
|
|
||||||
const [error, setError] = useState("");
|
const [error, setError] = useState("");
|
||||||
const [selectedEvent, setSelectedEvent] = useState<string | null>(null);
|
const [selectedEvent, setSelectedEvent] = useState<string | null>(null);
|
||||||
const [addingPoints, setAddingPoints] = useState<Record<string, boolean>>(
|
const [addingPoints, setAddingPoints] = useState<Record<string, boolean>>(
|
||||||
@@ -161,14 +160,6 @@ export default function FeedbackManagement({
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
if (loading) {
|
|
||||||
return (
|
|
||||||
<div className="bg-black/60 border border-pixel-gold/30 rounded-lg p-4 sm:p-8">
|
|
||||||
<p className="text-gray-400 text-center text-sm">Chargement...</p>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4 sm:space-y-6">
|
<div className="space-y-4 sm:space-y-6">
|
||||||
{/* Statistiques par événement */}
|
{/* Statistiques par événement */}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useState, useEffect, useTransition } from "react";
|
import { useState, useTransition } from "react";
|
||||||
import {
|
import {
|
||||||
Input,
|
Input,
|
||||||
Textarea,
|
Textarea,
|
||||||
@@ -77,7 +77,6 @@ interface HouseManagementProps {
|
|||||||
|
|
||||||
export default function HouseManagement({ initialHouses }: HouseManagementProps) {
|
export default function HouseManagement({ initialHouses }: HouseManagementProps) {
|
||||||
const [houses, setHouses] = useState<House[]>(initialHouses);
|
const [houses, setHouses] = useState<House[]>(initialHouses);
|
||||||
const [loading, setLoading] = useState(false);
|
|
||||||
const [editingHouse, setEditingHouse] = useState<House | null>(null);
|
const [editingHouse, setEditingHouse] = useState<House | null>(null);
|
||||||
const [saving, setSaving] = useState(false);
|
const [saving, setSaving] = useState(false);
|
||||||
const [deletingHouseId, setDeletingHouseId] = useState<string | null>(null);
|
const [deletingHouseId, setDeletingHouseId] = useState<string | null>(null);
|
||||||
@@ -216,10 +215,6 @@ export default function HouseManagement({ initialHouses }: HouseManagementProps)
|
|||||||
return num.toLocaleString("en-US");
|
return num.toLocaleString("en-US");
|
||||||
};
|
};
|
||||||
|
|
||||||
if (loading) {
|
|
||||||
return <div className="text-center text-gray-400 py-8">Chargement...</div>;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
<div className="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3 mb-4">
|
<div className="flex flex-col sm:flex-row sm:justify-between sm:items-center gap-3 mb-4">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { useState, useEffect, useTransition } from "react";
|
import { useState, useTransition } from "react";
|
||||||
import {
|
import {
|
||||||
Avatar,
|
Avatar,
|
||||||
Input,
|
Input,
|
||||||
@@ -43,7 +43,6 @@ interface UserManagementProps {
|
|||||||
|
|
||||||
export default function UserManagement({ initialUsers }: UserManagementProps) {
|
export default function UserManagement({ initialUsers }: UserManagementProps) {
|
||||||
const [users, setUsers] = useState<User[]>(initialUsers);
|
const [users, setUsers] = useState<User[]>(initialUsers);
|
||||||
const [loading, setLoading] = useState(false);
|
|
||||||
const [editingUser, setEditingUser] = useState<EditingUser | null>(null);
|
const [editingUser, setEditingUser] = useState<EditingUser | null>(null);
|
||||||
const [saving, setSaving] = useState(false);
|
const [saving, setSaving] = useState(false);
|
||||||
const [deletingUserId, setDeletingUserId] = useState<string | null>(null);
|
const [deletingUserId, setDeletingUserId] = useState<string | null>(null);
|
||||||
@@ -183,10 +182,6 @@ export default function UserManagement({ initialUsers }: UserManagementProps) {
|
|||||||
? Math.max(0, currentEditingUserData.xp + editingUser.xpDelta)
|
? Math.max(0, currentEditingUserData.xp + editingUser.xpDelta)
|
||||||
: 0;
|
: 0;
|
||||||
|
|
||||||
if (loading) {
|
|
||||||
return <div className="text-center text-gray-400 py-8">Chargement...</div>;
|
|
||||||
}
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="space-y-4">
|
<div className="space-y-4">
|
||||||
{users.length === 0 ? (
|
{users.length === 0 ? (
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
"use client";
|
"use client";
|
||||||
|
|
||||||
import { ButtonHTMLAttributes, ReactNode, ElementType, AnchorHTMLAttributes } from "react";
|
import { ButtonHTMLAttributes, ReactNode, ElementType } from "react";
|
||||||
import Link from "next/link";
|
import Link from "next/link";
|
||||||
|
|
||||||
type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
|
type ButtonProps = ButtonHTMLAttributes<HTMLButtonElement> & {
|
||||||
|
|||||||
Reference in New Issue
Block a user