refactor: improve formatting, type safety, and component organization

- Adjusted inconsistent formatting for better readability across components and services.
- Enhanced type safety by adding placeholders for ignored error parameters and improving types across services.
- Improved component organization by reordering imports consistently and applying formatting updates in UI components.
This commit is contained in:
Mathis HERRIOT
2026-01-29 14:11:28 +01:00
parent 3edf5cc070
commit 9ccbd2ceb1
11 changed files with 133 additions and 59 deletions

View File

@@ -108,7 +108,10 @@ export default function LoginPage() {
</CardHeader>
<CardContent>
{show2fa ? (
<form onSubmit={onOtpSubmit} className="space-y-6 flex flex-col items-center">
<form
onSubmit={onOtpSubmit}
className="space-y-6 flex flex-col items-center"
>
<InputOTP
maxLength={6}
value={otpValue}
@@ -126,7 +129,11 @@ export default function LoginPage() {
<InputOTPSlot index={5} />
</InputOTPGroup>
</InputOTP>
<Button type="submit" className="w-full" disabled={loading || otpValue.length !== 6}>
<Button
type="submit"
className="w-full"
disabled={loading || otpValue.length !== 6}
>
{loading ? "Vérification..." : "Vérifier le code"}
</Button>
<Button

View File

@@ -31,7 +31,8 @@ const registerSchema = z.object({
.string()
.min(3, { message: "Le pseudo doit faire au moins 3 caractères" })
.regex(/^[a-z0-9_]+$/, {
message: "Le pseudo ne doit contenir que des minuscules, chiffres et underscores",
message:
"Le pseudo ne doit contenir que des minuscules, chiffres et underscores",
}),
email: z.string().email({ message: "Email invalide" }),
password: z
@@ -43,7 +44,9 @@ const registerSchema = z.object({
.regex(/[a-z]/, {
message: "Le mot de passe doit contenir au moins une minuscule",
})
.regex(/[0-9]/, { message: "Le mot de passe doit contenir au moins un chiffre" })
.regex(/[0-9]/, {
message: "Le mot de passe doit contenir au moins un chiffre",
})
.regex(/[^A-Za-z0-9]/, {
message: "Le mot de passe doit contenir au moins un caractère spécial",
}),

View File

@@ -1,15 +1,15 @@
"use client";
import { useEffect, useState } from "react";
import { toast } from "sonner";
import {
CheckCircle,
XCircle,
AlertCircle,
MoreHorizontal,
ArrowLeft,
CheckCircle,
MoreHorizontal,
XCircle,
} from "lucide-react";
import Link from "next/link";
import { useCallback, useEffect, useState } from "react";
import { toast } from "sonner";
import { Badge } from "@/components/ui/badge";
import { Button } from "@/components/ui/button";
import {
@@ -34,34 +34,34 @@ import {
TableRow,
} from "@/components/ui/table";
import { adminService } from "@/services/admin.service";
import { ReportStatus, type Report } from "@/services/report.service";
import { type Report, ReportStatus } from "@/services/report.service";
export default function AdminReportsPage() {
const [reports, setReports] = useState<Report[]>([]);
const [loading, setLoading] = useState(true);
const fetchReports = async () => {
const fetchReports = useCallback(async () => {
setLoading(true);
try {
const data = await adminService.getReports();
setReports(data);
} catch (error) {
} catch (_error) {
toast.error("Erreur lors du chargement des signalements.");
} finally {
setLoading(false);
}
};
}, []);
useEffect(() => {
fetchReports();
}, []);
}, [fetchReports]);
const handleUpdateStatus = async (reportId: string, status: ReportStatus) => {
try {
await adminService.updateReportStatus(reportId, status);
toast.success("Statut mis à jour.");
fetchReports();
} catch (error) {
} catch (_error) {
toast.error("Erreur lors de la mise à jour du statut.");
}
};
@@ -128,9 +128,7 @@ export default function AdminReportsPage() {
) : (
reports.map((report) => (
<TableRow key={report.uuid}>
<TableCell>
{report.reporterId.substring(0, 8)}...
</TableCell>
<TableCell>{report.reporterId.substring(0, 8)}...</TableCell>
<TableCell>
{report.contentId ? (
<Link
@@ -188,9 +186,7 @@ export default function AdminReportsPage() {
</DropdownMenuItem>
{report.contentId && (
<DropdownMenuItem asChild>
<Link href={`/meme/${report.contentId}`}>
Voir le contenu
</Link>
<Link href={`/meme/${report.contentId}`}>Voir le contenu</Link>
</DropdownMenuItem>
)}
</DropdownMenuContent>

View File

@@ -3,6 +3,7 @@
import { zodResolver } from "@hookform/resolvers/zod";
import {
AlertTriangle,
Download,
Laptop,
Loader2,
Moon,
@@ -12,7 +13,6 @@ import {
Sun,
Trash2,
User as UserIcon,
Download,
} from "lucide-react";
import { useRouter } from "next/navigation";
import { useTheme } from "next-themes";
@@ -20,6 +20,7 @@ import * as React from "react";
import { useForm } from "react-hook-form";
import { toast } from "sonner";
import * as z from "zod";
import { TwoFactorSetup } from "@/components/two-factor-setup";
import {
AlertDialog,
AlertDialogAction,
@@ -53,7 +54,6 @@ import { Label } from "@/components/ui/label";
import { RadioGroup, RadioGroupItem } from "@/components/ui/radio-group";
import { Spinner } from "@/components/ui/spinner";
import { Textarea } from "@/components/ui/textarea";
import { TwoFactorSetup } from "@/components/two-factor-setup";
import { useAuth } from "@/providers/auth-provider";
import { UserService } from "@/services/user.service";
@@ -326,7 +326,8 @@ export default function SettingsPage() {
<CardTitle>Portabilité des données</CardTitle>
</div>
<CardDescription>
Conformément au RGPD, vous pouvez exporter l'intégralité de vos données rattachées à votre compte.
Conformément au RGPD, vous pouvez exporter l'intégralité de vos données
rattachées à votre compte.
</CardDescription>
</CardHeader>
<CardContent>
@@ -334,7 +335,8 @@ export default function SettingsPage() {
<div className="space-y-1">
<p className="font-bold">Exporter mes données</p>
<p className="text-sm text-muted-foreground">
Téléchargez un fichier JSON contenant votre profil, vos mèmes et vos favoris.
Téléchargez un fichier JSON contenant votre profil, vos mèmes et vos
favoris.
</p>
</div>
<Button