diff --git a/src/components/session/SessionCard.tsx b/src/components/session/SessionCard.tsx index d899ed0..a4b2dd8 100644 --- a/src/components/session/SessionCard.tsx +++ b/src/components/session/SessionCard.tsx @@ -6,9 +6,10 @@ import {ISessionInfo} from "@/types/sessions.ts"; interface SessionCardProps { session: ISessionInfo + room?: string } -const SessionCard: React.FC = ({session}) => { +const SessionCard: React.FC = ({session, room}) => { const category = session.category const startTime = new Date(session.startsAt).toLocaleTimeString(["en-US"], {hour: '2-digit', minute:'2-digit'}) const endTime = new Date(session.endsAt).toLocaleTimeString(["en-US"], {hour: '2-digit', minute:'2-digit'}) @@ -20,9 +21,12 @@ const SessionCard: React.FC = ({session}) => {

{session.title}

- { startTime && endTime && -

-

- } + Descripción

{session.description}

diff --git a/src/components/session/SessionTracks.tsx b/src/components/session/SessionTracks.tsx index d6a31b9..df8bc16 100644 --- a/src/components/session/SessionTracks.tsx +++ b/src/components/session/SessionTracks.tsx @@ -5,15 +5,22 @@ import {Speech} from "lucide-react"; import {Badge} from "@/components/ui/badge.tsx"; import {formatTiemstamp} from "@/lib/utils.ts"; import {ISessionInfo} from "@/types/sessions.ts"; +import {IRoom} from "@/types/speakers.ts"; interface SessionTracksProps { currentSession?: ISessionInfo sessions: ISessionInfo[] category: string + rooms: IRoom[] } -const SessionTracks: React.FC = ({sessions, category, currentSession}) => { +const SessionTracks: React.FC = ({sessions, category, currentSession, rooms}) => { const tracks = sessions.filter(session => session.category === category && session.id !== currentSession.id); + + const findRoomName = (id: string) => { + return rooms.find(room => room.id === Number(id)).name + } + return ( Charlas de {category} @@ -21,6 +28,7 @@ const SessionTracks: React.FC = ({sessions, category, curren { tracks.map(session => (
+

Sala: {findRoomName(session.roomId)}

- diff --git a/src/components/speakers/SpeakerInfo.tsx b/src/components/speakers/SpeakerInfo.tsx index b651f8a..8ea5b34 100644 --- a/src/components/speakers/SpeakerInfo.tsx +++ b/src/components/speakers/SpeakerInfo.tsx @@ -11,15 +11,17 @@ import Shared from "@/components/Shared.tsx"; import Loading from "@/pages/Loading.tsx"; import SessionCard from "@/components/session/SessionCard.tsx"; import SessionTracks from "@/components/session/SessionTracks.tsx"; +import {ISession} from "@/types/sessions.ts"; const SpeakerInfo = () => { const navigate = useNavigate() const location = useLocation(); const { speakerId } = useParams(); - const { speakers, sessions } = useAppContext(); + const { speakers, sessions, rooms } = useAppContext(); const speaker = location.state?.speaker as ISpeaker; const [currentSpeaker, setCurrentSpeaker] = useState() const fullUrl = `${window.location.origin}${location.pathname}${location.search}${location.hash}`; + const getRoomName = (session: ISession) => rooms.find(room => room.id == Number(session.roomId)).name; useEffect(() => { scrollToTop() @@ -78,12 +80,12 @@ const SpeakerInfo = () => { { currentSpeaker.sessions.map(session => ( - + )) }

{ currentSpeaker.sessions.length == 1 && - + } ) diff --git a/src/context/AppContext.tsx b/src/context/AppContext.tsx index 080b594..0e0bedb 100644 --- a/src/context/AppContext.tsx +++ b/src/context/AppContext.tsx @@ -1,5 +1,5 @@ import { createContext, useContext, useState, useEffect } from "react"; -import { ISpeaker} from "@/types/speakers.ts"; +import {IRoom, ISpeaker} from "@/types/speakers.ts"; import {getAll} from "@/https/fetch.ts"; import {AppStatus} from "@/types/types.ts"; import {addInformationToSession, addSessionSpeakers} from "@/lib/utils.ts"; @@ -20,6 +20,7 @@ interface AppContextType { setSavedSessions: (sessions: Set) => void; displayAll: boolean; setDisplayAll: (displayAll: boolean) => void; + rooms: IRoom[]; } const AppContext = createContext(null); @@ -30,6 +31,7 @@ export const AppProvider = ({ children }) => { const [appStatus, setAppStatus] = useState(AppStatus.Loading); const [displayAll, setDisplayAll] = useState(true); const [sessions, setSessions] = useState([]); + const [rooms, setRooms] = useState([]); const [error, setError] = useState(null) const [savedSessions, setSavedSessions] = useState>(() => { const raw = localStorage.getItem("savedSessions"); @@ -49,6 +51,7 @@ export const AppProvider = ({ children }) => { sessionsInfo, speakers ); + setRooms(rooms); setSpeakers(getSpeakersWithSessions); setSessions(sessionsInfo); setAppStatus(AppStatus.Success); @@ -69,7 +72,8 @@ export const AppProvider = ({ children }) => { speakers, agenda, appStatus, - setAppStatus + setAppStatus, + rooms }; return ( diff --git a/src/pages/SessionPage.tsx b/src/pages/SessionPage.tsx index 4cdde95..dc1903b 100644 --- a/src/pages/SessionPage.tsx +++ b/src/pages/SessionPage.tsx @@ -9,9 +9,10 @@ import SessionTracks from "@/components/session/SessionTracks.tsx"; const SessionPage = () => { const navigate = useNavigate() - const {sessions} = useAppContext() + const {sessions, rooms} = useAppContext() const { sessionId } = useParams(); const session = sessions.find(session => session.id == Number(sessionId)) + const getRoom = rooms.find(room => room.id === Number(session?.roomId)).name const handleGoBack = () => { if (window.history.length > 1){ @@ -48,8 +49,8 @@ const SessionPage = () => { {window.history.length > 1 ? "Volver atras" : "Volver a la agenda"} - - + + ) }