Skip to content

Commit 245486c

Browse files
committed
fix session badge in agenda
1 parent 68f8554 commit 245486c

File tree

5 files changed

+25
-9
lines changed

5 files changed

+25
-9
lines changed

src/components/agenda/AgendaItem.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ const AgendaItem: React.FC<AgendaItemProps> = ({ icon: Icon, title, time }) => {
2323
<p className="font-medium text-primary-800">{title}</p>
2424
{
2525
time.map((timeString, index) => (
26-
<time key={`time-${index}`} className={`flex ${isSingleTime ? "md:flex-col lg:flex-row lg:gap-2" : "md:flex-col lg:flex-row flex-wrap lg:gap-2"} text-primary-600 text-sm leading-tight`}>
26+
<time key={`time-${index}`} className={`flex gap-1 md:gap-0.5 lg:gap-x-2 lg:gap-y-1 ${isSingleTime ? "md:flex-col lg:flex-row " : "md:flex-col lg:flex-row flex-wrap"} text-primary-600 justify-center text-sm leading-tight`}>
2727
<span>{splitTime(timeString).start}</span>
2828
{splitTime(timeString).end && <span aria-label="a" className="text-xs">-</span>}
2929
<span>{splitTime(timeString).end}</span>

src/components/session/SessionCard.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {Speech} from "lucide-react";
44
import React from "react";
55

66
const SessionCard = ({session}) => {
7+
const category = session.category
78
return (
89
<Card className="py-8 px-6 flex flex-col gap-4">
910
<h2 className="text-3xl font-bold text-alternative-700">
@@ -15,7 +16,7 @@ const SessionCard = ({session}) => {
1516
<span className="text-lg text-primary-600 font-semibold">Descripción</span>
1617
<p className="text-lg text-gray-700">{session.description}</p>
1718
<CardFooter className="p-0">
18-
<Badge variant="default" className="flex gap-2"><Speech/> Track: {session.category}</Badge>
19+
<Badge variant="default" className="flex gap-2"><Speech/> Track: {category}</Badge>
1920
</CardFooter>
2021
</Card>
2122
)

src/context/AppContext.tsx

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
import { createContext, useContext, useState, useEffect } from "react";
2-
import {ISession, ISpeaker} from "@/types/speakers.ts";
2+
import {ISession, ISessionInfo, ISpeaker} from "@/types/speakers.ts";
33
import {getAll} from "@/https/fetch.ts";
44
import {AppStatus} from "@/types/types.ts";
5-
import {addSessionSpeakers} from "@/lib/utils.ts";
5+
import {addSessionSpeakers, getCategoryNameSessions} from "@/lib/utils.ts";
66
import {ITimeSlot} from "@/types/agenda.ts";
77
import ErrorPage from "@/pages/ErrorPage.tsx";
88
import Loading from "@/pages/Loading.tsx";
99

1010

1111
interface AppContextType {
1212
speakers: ISpeaker[];
13-
sessions: ISession[];
13+
sessions: ISessionInfo[];
1414
agenda: ITimeSlot[];
1515
appStatus: AppStatus;
1616
setAgenda: (agenda: ITimeSlot[]) => void;
@@ -27,7 +27,7 @@ export const AppProvider = ({ children }) => {
2727
const [agenda, setAgenda] = useState<ITimeSlot[]>([]);
2828
const [appStatus, setAppStatus] = useState(AppStatus.Loading);
2929
const [displayAll, setDisplayAll] = useState<boolean>(true);
30-
const [sessions, setSessions] = useState<ISession[]>([]);
30+
const [sessions, setSessions] = useState<ISessionInfo[]>([]);
3131
const [savedSessions, setSavedSessions] = useState<Set<number>>(() => {
3232
const raw = localStorage.getItem("savedSessions");
3333
return raw ? new Set<number>(JSON.parse(raw)) : new Set<number>();
@@ -40,13 +40,14 @@ export const AppProvider = ({ children }) => {
4040
useEffect(() => {
4141
getAll()
4242
.then((data) => {
43+
const categories = data.categories[0].items
4344
const getSpeakersWithSessions = addSessionSpeakers(
4445
data.sessions,
4546
data.speakers,
46-
data.categories[0].items
47+
categories
4748
);
4849
setSpeakers(getSpeakersWithSessions);
49-
setSessions(data.sessions);
50+
setSessions(getCategoryNameSessions(categories, data.sessions));
5051
setAppStatus(AppStatus.Success);
5152
})
5253
.catch(() => {

src/lib/utils.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import { clsx, type ClassValue } from "clsx"
22
import { twMerge } from "tailwind-merge"
3-
import {ICategory, ISession, ISpeaker} from "@/types/speakers.ts";
3+
import {ICategory, ISession, ISessionInfo, ISpeaker} from "@/types/speakers.ts";
44

55
export function cn(...inputs: ClassValue[]) {
66
return twMerge(clsx(inputs))
@@ -34,6 +34,16 @@ export const addSessionSpeakers = (sessions: ISession[], speakers: ISpeaker[], c
3434
});
3535
}
3636

37+
export const getCategoryNameSessions = (categories: ICategory[], sessions: ISession[]): ISessionInfo[] => {
38+
return sessions.map(session => {
39+
const category = categories.find(category => session.categoryItems.includes(category.id));
40+
return {
41+
...session,
42+
category: category ? category.name : ""
43+
}
44+
})
45+
}
46+
3747
export const findSpeaker = (speakers: ISpeaker[], id: string) => speakers.find((speaker) => speaker.id === id);
3848

3949
export const formatTime =(timeString: string) => {

src/types/speakers.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@ export interface ISession {
2727
categoryItems: number[]
2828
}
2929

30+
export interface ISessionInfo extends ISession {
31+
category: string
32+
}
33+
3034
export interface ILink {
3135
title: string
3236
url: string

0 commit comments

Comments
 (0)