@@ -15,9 +15,9 @@ const diff = (startTime: Date, conferenceDate: Date) => {
15
15
// If difference is > 1 day
16
16
// show distance in days to conference start, so all entries have the same difference
17
17
const daysDistance = differenceInCalendarDays ( conferenceDate , now )
18
- return daysDistance > 1 ? `about ${ daysDistance } days` : 'about 1 day'
18
+ return daysDistance > 1 ? `${ daysDistance } days` : '1 day'
19
19
}
20
- return formatDistance ( startTime , now )
20
+ return formatDistance ( startTime , now ) . replace ( 'about ' , '' )
21
21
}
22
22
23
23
const startsInMinutes = ( startTime : Date ) => {
@@ -78,6 +78,16 @@ export const Schedule = ({
78
78
const eventTime = toEventTime ( { conferenceDate, userTimeZone } )
79
79
const userTime = toUserTime ( { conferenceDate, eventTimezoneName } )
80
80
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
+ } , [ ] )
81
91
82
92
return (
83
93
< table className = { tableStyles . Table } >
@@ -91,7 +101,9 @@ export const Schedule = ({
91
101
< th >
92
102
Your Time
93
103
< br />
94
- < small > { formatTimezone ( userTimeZone ) } </ small >
104
+ < small >
105
+ { formatTimezone ( userTimeZone ) } ({ userFormat ( currentTime ) } )
106
+ </ small >
95
107
</ th >
96
108
< th > Starts in</ th >
97
109
< th > Session</ th >
@@ -104,24 +116,44 @@ export const Schedule = ({
104
116
! hidePastSessions ||
105
117
startsInMinutes ( userTime ( time as unknown as number ) ) > 0 ,
106
118
)
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
+ } ) }
125
157
</ tbody >
126
158
</ table >
127
159
)
0 commit comments