@@ -15,9 +15,9 @@ const diff = (startTime: Date, conferenceDate: Date) => {
1515 // If difference is > 1 day
1616 // show distance in days to conference start, so all entries have the same difference
1717 const daysDistance = differenceInCalendarDays ( conferenceDate , now )
18- return daysDistance > 1 ? `about ${ daysDistance } days` : 'about 1 day'
18+ return daysDistance > 1 ? `${ daysDistance } days` : '1 day'
1919 }
20- return formatDistance ( startTime , now )
20+ return formatDistance ( startTime , now ) . replace ( 'about ' , '' )
2121}
2222
2323const startsInMinutes = ( startTime : Date ) => {
@@ -78,6 +78,16 @@ export const Schedule = ({
7878 const eventTime = toEventTime ( { conferenceDate, userTimeZone } )
7979 const userTime = toUserTime ( { conferenceDate, eventTimezoneName } )
8080 const userFormat = formatUserTime ( { userTimeZone } )
81+ const [ currentTime , setCurrentTime ] = useState < Date > ( new Date ( ) )
82+
83+ useEffect ( ( ) => {
84+ const i = setInterval ( ( ) => {
85+ setCurrentTime ( new Date ( ) )
86+ } , 60 * 1000 )
87+ return ( ) => {
88+ clearInterval ( i )
89+ }
90+ } , [ ] )
8191
8292 return (
8393 < table className = { tableStyles . Table } >
@@ -91,7 +101,9 @@ export const Schedule = ({
91101 < th >
92102 Your Time
93103 < br />
94- < small > { formatTimezone ( userTimeZone ) } </ small >
104+ < small >
105+ { formatTimezone ( userTimeZone ) } ({ userFormat ( currentTime ) } )
106+ </ small >
95107 </ th >
96108 < th > Starts in</ th >
97109 < th > Session</ th >
@@ -104,24 +116,44 @@ export const Schedule = ({
104116 ! hidePastSessions ||
105117 startsInMinutes ( userTime ( time as unknown as number ) ) > 0 ,
106118 )
107- . map ( ( [ time , name ] ) => (
108- < tr key = { time } >
109- < td className = { 'time' } >
110- { formatEventTime ( eventTime ( time as unknown as number ) ) }
111- </ td >
112- < td className = { 'time' } >
113- { userFormat ( userTime ( time as unknown as number ) ) }
114- </ td >
115- < Countdown
116- key = { conferenceDate }
117- conferenceDate = { userTime ( 0 ) }
118- startTime = { userTime ( time as unknown as number ) }
119- />
120- < td >
121- < SessionName name = { name } />
122- </ td >
123- </ tr >
124- ) ) }
119+ . map ( ( [ time , name ] , i , sessions ) => {
120+ const nextIsOngoing =
121+ sessions [ i + 1 ] !== undefined
122+ ? startsInMinutes (
123+ userTime ( sessions [ i + 1 ] [ 0 ] as unknown as number ) ,
124+ ) < 0
125+ : false
126+
127+ const isOngoing =
128+ startsInMinutes ( userTime ( time as unknown as number ) ) < 0 &&
129+ ! nextIsOngoing
130+
131+ return (
132+ < tr key = { time } className = { isOngoing ? 'ongoing' : '' } >
133+ < td className = { 'time' } >
134+ { formatEventTime ( eventTime ( time as unknown as number ) ) }
135+ </ td >
136+ < td className = { 'time' } >
137+ { userFormat ( userTime ( time as unknown as number ) ) }
138+ </ td >
139+ { isOngoing && (
140+ < td >
141+ < em > ongoing</ em >
142+ </ td >
143+ ) }
144+ { ! isOngoing && (
145+ < Countdown
146+ key = { conferenceDate }
147+ conferenceDate = { userTime ( 0 ) }
148+ startTime = { userTime ( time as unknown as number ) }
149+ />
150+ ) }
151+ < td >
152+ < SessionName name = { name } />
153+ </ td >
154+ </ tr >
155+ )
156+ } ) }
125157 </ tbody >
126158 </ table >
127159 )
0 commit comments