11import { useCallback , useContext , useEffect , useMemo , useState } from 'react'
22import { getRoutesAsync , getRoutesByLineRef , getStopsForRouteAsync } from 'src/api/gtfsService'
3- import dayjs from 'src/dayjs'
3+ import dayjs , { toIsraelTimezone } from 'src/dayjs'
44import useVehicleLocations from 'src/hooks/useVehicleLocations'
55import { BusRoute } from 'src/model/busRoute'
66import { BusStop } from 'src/model/busStop'
77import { SearchContext } from 'src/model/pageState'
8- import { getServiceDayBounds } from 'src/model/serviceDay'
98import { type Point , toPoint } from 'src/pages/components/map-related/map-types'
109import { routeStartEnd , vehicleIDFormat } from 'src/pages/components/utils/rotueUtils'
1110import {
1211 normalizeStartTimeToken ,
1312 parseStartTimeToken ,
1413} from 'src/pages/components/utils/startTimeUtils'
1514
16- const formatTime = ( time : dayjs . Dayjs ) => time . format ( 'HH:mm' )
15+ const formatTime = ( time : dayjs . ConfigType ) => toIsraelTimezone ( time ) . format ( 'HH:mm' )
1716
1817export const useSingleLineData = (
1918 operatorId ?: string ,
@@ -60,7 +59,7 @@ export const useSingleLineData = (
6059 }
6160
6261 const controller = new AbortController ( )
63- const time = dayjs ( search . timestamp )
62+ const time = toIsraelTimezone ( search . timestamp )
6463
6564 getRoutesAsync ( time , time , operatorId , lineNumber , controller . signal )
6665 . then ( ( routes ) => {
@@ -86,9 +85,9 @@ export const useSingleLineData = (
8685 return routes ?. find ( ( route ) => route . key === routeKey )
8786 } , [ routes , routeKey ] )
8887
89- const [ serviceDayStart , serviceDayEnd ] = useMemo ( ( ) => {
90- const { start , end } = getServiceDayBounds ( dayjs ( search . timestamp ) )
91- return [ start , end ]
88+ const [ today , tomorrow ] = useMemo ( ( ) => {
89+ const today = toIsraelTimezone ( search . timestamp ) . startOf ( 'day' )
90+ return [ today , today . add ( 1 , 'day' ) ]
9291 } , [ search . timestamp ] )
9392
9493 const validVehicleNumber = useMemo ( ( ) => {
@@ -98,8 +97,8 @@ export const useSingleLineData = (
9897 } , [ vehicleNumber ] )
9998
10099 const { locations, isLoading : locationsAreLoading } = useVehicleLocations ( {
101- from : serviceDayStart . valueOf ( ) ,
102- to : serviceDayEnd . valueOf ( ) ,
100+ from : today . valueOf ( ) ,
101+ to : tomorrow . valueOf ( ) ,
103102 operatorRef : operatorId ? Number ( operatorId ) : undefined ,
104103 lineRef : selectedRoute ?. lineRef ? Number ( selectedRoute . lineRef ) : undefined ,
105104 vehicleRef : validVehicleNumber ,
@@ -121,8 +120,8 @@ export const useSingleLineData = (
121120 for ( const position of positions ) {
122121 const startTime = position . point ?. siriRideScheduledStartTime
123122 if ( ! startTime ) continue
124- const dayjsTime = dayjs ( startTime )
125- if ( ! dayjsTime . isBefore ( serviceDayStart ) && dayjsTime . isBefore ( serviceDayEnd ) ) {
123+ const dayjsTime = toIsraelTimezone ( startTime )
124+ if ( dayjsTime . isAfter ( today ) && dayjsTime . isBefore ( tomorrow ) ) {
126125 const formattedTime = formatTime ( dayjsTime )
127126 const key = `${ formattedTime } |${ position . point ?. siriRideVehicleRef } `
128127 if ( ! uniqueTimes . has ( key ) ) {
@@ -168,7 +167,7 @@ export const useSingleLineData = (
168167 }
169168
170169 fetchOptions ( )
171- } , [ positions , serviceDayStart , serviceDayEnd , vehicleNumber ] )
170+ } , [ positions , today , tomorrow , vehicleNumber ] )
172171
173172 useEffect ( ( ) => {
174173 const parsedStartTime = parseStartTimeToken ( startTime )
@@ -184,7 +183,7 @@ export const useSingleLineData = (
184183 const vehicleRef = position . point ?. siriRideVehicleRef ?. toString ( )
185184 if ( ! scheduledStart || ! vehicleRef || ! scheduledTime ) return false
186185 return (
187- formatTime ( dayjs ( scheduledStart ) ) === scheduledTime &&
186+ formatTime ( scheduledStart ) === scheduledTime &&
188187 ( scheduledVehicle ? scheduledVehicle === vehicleRef : true ) &&
189188 ( scheduledLine ? scheduledLine === position . point ?. siriRouteLineRef ?. toString ( ) : true )
190189 )
@@ -199,11 +198,7 @@ export const useSingleLineData = (
199198 const scheduledTime = parsedStartTime ?. scheduledTime
200199 const scheduledLine = parsedStartTime ?. lineRef
201200 const [ hour , minute ] = scheduledTime ? scheduledTime . split ( ':' ) . map ( Number ) : [ 0 , 0 ]
202- const startTimeTimestamp = serviceDayStart
203- . hour ( hour )
204- . minute ( minute )
205- . second ( 0 )
206- . millisecond ( 0 )
201+ const startTimeTimestamp = today . hour ( hour ) . minute ( minute ) . second ( 0 ) . millisecond ( 0 )
207202 let routeIds : number [ ] | undefined
208203 if ( selectedRoute ?. routeIds && selectedRoute . routeIds . length > 0 ) {
209204 routeIds = selectedRoute . routeIds
@@ -224,7 +219,7 @@ export const useSingleLineData = (
224219 }
225220 }
226221 fetchStops ( )
227- } , [ selectedRoute ?. routeIds , operatorId , startTime , serviceDayStart ] )
222+ } , [ selectedRoute ?. routeIds , operatorId , startTime , today ] )
228223
229224 return {
230225 positions : filteredPositions ,
0 commit comments