fix: ApiError typée + error handling pages video/playlists/admin

- api.ts : ApiError class (status: number) — remplace Error générique
- VideoPage/PlaylistPage : instanceof ApiError au lieu de message.includes()
- PlaylistsPage : fetchError + createError — silent catch supprimé
- AdminPage : guard roles.some() aligné Header (super_admin inclus)
This commit is contained in:
2026-03-14 22:37:36 +01:00
parent 4e8c1aa849
commit 01d347bce3
5 changed files with 29 additions and 11 deletions

View File

@@ -1,6 +1,6 @@
import { useState, useEffect } from 'react';
import { useParams, Link } from 'react-router-dom';
import { apiFetch } from '../lib/api';
import { apiFetch, ApiError } from '../lib/api';
interface Video {
id: string;
@@ -35,8 +35,8 @@ export default function PlaylistPage() {
if (!id) return;
apiFetch<PlaylistResponse>(`/playlists/${id}`)
.then((res) => setData(res.data))
.catch((err: Error) => {
if (err.message.includes('403')) setError('forbidden');
.catch((err: unknown) => {
if (err instanceof ApiError && err.status === 403) setError('forbidden');
else setError('not_found');
})
.finally(() => setLoading(false));