@@ -3,6 +3,11 @@ import React, { FC, useEffect, useState } from "react"
3
3
import { eventsColors } from "../../../utils/eventsColors"
4
4
import { getEventTitle } from "../../../utils/eventTitle"
5
5
import Filters from "./Filters"
6
+ import { SchedSpeaker } from "../Speakers/Speaker"
7
+
8
+ function isString ( x : any ) {
9
+ return Object . prototype . toString . call ( x ) === "[object String]"
10
+ }
6
11
7
12
export interface ScheduleSession {
8
13
id : string
@@ -14,7 +19,8 @@ export interface ScheduleSession {
14
19
event_type : string
15
20
name : string
16
21
venue : string
17
- speakers ?: string
22
+ speakers ?: SchedSpeaker [ ] | string
23
+ files ?: { name : string ; path : string } [ ]
18
24
}
19
25
20
26
export interface ConcurrentSessions {
@@ -214,8 +220,14 @@ const ScheduleList: FC<Props> = ({
214
220
? session . event_type . slice ( 0 , - 1 )
215
221
: session . event_type
216
222
217
- const speakers = session . speakers ?. split ( "," ) || [ ]
218
- const eventTitle = getEventTitle ( session , speakers )
223
+ const speakers = session . speakers
224
+ const formattedSpeakers = isString ( speakers || [ ] )
225
+ ? ( speakers as string ) ?. split ( "," )
226
+ : ( speakers as SchedSpeaker [ ] ) ?. map ( e => e . name )
227
+ const eventTitle = getEventTitle (
228
+ session ,
229
+ formattedSpeakers
230
+ )
219
231
220
232
const borderColor = eventsColors [ session . event_type ]
221
233
@@ -260,9 +272,9 @@ const ScheduleList: FC<Props> = ({
260
272
{ showEventType ? eventType + " / " : "" }
261
273
{ eventTitle }
262
274
< div className = "flex flex-col" >
263
- { speakers . length > 0 && (
275
+ { ( speakers ? .length || 0 ) > 0 && (
264
276
< span className = "font-light" >
265
- { speakers . join ( ", " ) }
277
+ { formattedSpeakers . join ( ", " ) }
266
278
</ span >
267
279
) }
268
280
< span className = "font-bold mt-2 flex items-center text-gray-700" >
0 commit comments