6 changed files with 83 additions and 4 deletions
@ -0,0 +1,35 @@ |
|||
import Navbar from "../components/Navbar.jsx"; |
|||
import {useEffect, useState} from "react"; |
|||
import {useParams} from "react-router-dom"; |
|||
import {fetchChannelDetails} from "../services/channel.service.js"; |
|||
|
|||
|
|||
export default function Channel() { |
|||
|
|||
const id = useParams().id; |
|||
|
|||
const [alerts, setAlerts] = useState([]); |
|||
const [channel, setChannel] = useState(null); |
|||
|
|||
useEffect(() => { |
|||
async function fetchAlerts() { |
|||
setChannel(await fetchChannelDetails(id, addAlert)); |
|||
} |
|||
fetchAlerts(); |
|||
}, []) |
|||
|
|||
const addAlert = (type, message) => { |
|||
const newAlert = { type, message, id: Date.now() }; // Add unique ID |
|||
setAlerts([...alerts, newAlert]); |
|||
}; |
|||
const onCloseAlert = (alertToRemove) => { |
|||
setAlerts(alerts.filter(alert => alert !== alertToRemove)); |
|||
} |
|||
|
|||
return ( |
|||
<div className="min-w-screen min-h-screen bg-linear-to-br from-left-gradient to-right-gradient"> |
|||
<Navbar isSearchPage={false} alerts={alerts} onCloseAlert={onCloseAlert} /> |
|||
</div> |
|||
) |
|||
|
|||
} |
|||
@ -0,0 +1,15 @@ |
|||
|
|||
|
|||
export function fetchChannelDetails(channelId, addAlert) { |
|||
return fetch(`/api/channels/${channelId}`) |
|||
.then(response => { |
|||
if (!response.ok) { |
|||
throw new Error('Network response was not ok'); |
|||
} |
|||
return response.json(); |
|||
}) |
|||
.catch(error => { |
|||
addAlert('error', "Erreur lors de la récupération des détails de la chaîne"); |
|||
throw error; |
|||
}); |
|||
} |
|||
Loading…
Reference in new issue