11import React , { useCallback , useContext , useEffect , useRef , useState } from 'react' ;
22// import {Text} from 'react-native';
33import throttle from 'lodash/throttle' ;
4+ import XDate from 'xdate' ;
45
56import Context from '../expandableCalendar/Context' ;
67import { UpdateSources } from '../expandableCalendar/commons' ;
8+ import { isToday } from '../dateutils' ;
79import Timeline , { TimelineProps } from '../timeline/Timeline' ;
810import InfiniteList from '../infinite-list' ;
911import useTimelinePages , { INITIAL_PAGE , NEAR_EDGE_THRESHOLD } from './useTimelinePages' ;
1012
1113export interface TimelineListProps {
1214 events : { [ date : string ] : TimelineProps [ 'events' ] } ;
13- timelineProps : Omit < TimelineProps , 'events' > ;
15+ timelineProps ?: Omit < TimelineProps , 'events' | 'showNowIndicator' > ;
16+ showNowIndicator ?: boolean ;
1417}
1518
1619const TimelineList = ( props : TimelineListProps ) => {
17- const { timelineProps, events} = props ;
20+ const { timelineProps, events, showNowIndicator } = props ;
1821 const { date, updateSource, setDate} = useContext ( Context ) ;
1922 const listRef = useRef < any > ( ) ;
2023 const prevDate = useRef ( date ) ;
2124 const [ timelineOffset , setTimelineOffset ] = useState ( ) ;
2225
23- const {
24- pages,
25- pagesRef,
26- resetPages,
27- resetPagesDebounce,
28- scrollToPageDebounce,
29- shouldResetPages,
30- isOutOfRange,
31- } = useTimelinePages ( { date, listRef} ) ;
26+ const { pages, pagesRef, resetPages, resetPagesDebounce, scrollToPageDebounce, shouldResetPages, isOutOfRange} =
27+ useTimelinePages ( { date, listRef} ) ;
3228
3329 useEffect ( ( ) => {
3430 if ( date !== prevDate . current ) {
@@ -79,9 +75,7 @@ const TimelineList = (props: TimelineListProps) => {
7975 const renderPage = useCallback (
8076 ( _type , item ) => {
8177 const timelineEvent = events [ item ] ;
82-
8378 const isCurrent = prevDate . current === item ;
84-
8579 return (
8680 < >
8781 < Timeline
@@ -92,13 +86,14 @@ const TimelineList = (props: TimelineListProps) => {
9286 events = { timelineEvent }
9387 scrollOffset = { isCurrent ? undefined : timelineOffset }
9488 onChangeOffset = { onTimelineOffsetChange }
89+ showNowIndicator = { showNowIndicator && isToday ( new XDate ( item ) ) }
9590 />
9691 { /* NOTE: Keeping this for easy debugging */ }
9792 { /* <Text style={{position: 'absolute'}}>{item}</Text> */ }
9893 </ >
9994 ) ;
10095 } ,
101- [ events , timelineOffset ]
96+ [ events , timelineOffset , showNowIndicator ]
10297 ) ;
10398
10499 return (
0 commit comments