@@ -15,12 +15,16 @@ export const Timekeeper = () => {
15
15
const [ activeStepIndex , setActiveStepIndex ] = useLocalStorage ( 'DREM-timekeeper-state' , 0 ) ;
16
16
const [ raceConfig , setRaceConfig ] = useLocalStorage ( 'DREM-timekeeper-race-config' , { } ) ;
17
17
const [ race , setRace ] = useLocalStorage ( 'DREM-timekeeper-current-race' , defaultRace ) ;
18
- const [ fastestLap , SetFastestLap ] = useState ( [ ] ) ;
18
+ const [ fetchLogsEnable , setFetchLogsEnable ] = useState ( false ) ;
19
+ const [ fastestLap , setFastestLap ] = useState ( [ ] ) ;
19
20
const [ fastestAverageLap , setFastestAverageLap ] = useState ( [ ] ) ;
21
+ const [ startTime , setStartTime ] = useState ( ( ) => {
22
+ new Date ( ) ;
23
+ } ) ;
20
24
const selectedEvent = useSelectedEventContext ( ) ;
21
25
const selectedTrack = useSelectedTrackContext ( ) ;
22
26
23
- const [ , dispatch ] = useStore ( ) ;
27
+ const [ state , dispatch ] = useStore ( ) ;
24
28
// change event info and race config when a user select another event
25
29
useEffect ( ( ) => {
26
30
if ( selectedEvent . eventId !== race . eventId ) {
@@ -31,7 +35,8 @@ export const Timekeeper = () => {
31
35
const modifiedRace = { ...race , eventId : selectedEvent . eventId } ;
32
36
setRace ( modifiedRace ) ;
33
37
}
34
- } , [ selectedEvent , selectedTrack , race , setRace , setRaceConfig ] ) ;
38
+ // eslint-disable-next-line react-hooks/exhaustive-deps
39
+ } , [ selectedEvent , selectedTrack ] ) ;
35
40
36
41
// Reset the timekeeper when navigating away from the timekeeper
37
42
useEffect ( ( ) => {
@@ -40,6 +45,7 @@ export const Timekeeper = () => {
40
45
setActiveStepIndex ( 0 ) ;
41
46
setRace ( defaultRace ) ;
42
47
} ;
48
+ // eslint-disable-next-line react-hooks/exhaustive-deps
43
49
} , [ ] ) ;
44
50
45
51
useEffect ( ( ) => {
@@ -65,12 +71,26 @@ export const Timekeeper = () => {
65
71
const obj = validLaps . find ( ( o ) => {
66
72
return o . time === res ;
67
73
} ) ;
68
- SetFastestLap ( [ obj ] ) ;
74
+ setFastestLap ( [ obj ] ) ;
75
+ // Find if any car is able to log
76
+ if ( ! fetchLogsEnable ) {
77
+ validLaps . some ( ( lap ) => {
78
+ const car = state . cars . cars . find ( ( car ) => {
79
+ return car . ComputerName === lap . carName && car . LoggingCapable ;
80
+ } ) ;
81
+ if ( car ) {
82
+ setFetchLogsEnable ( true ) ;
83
+ return true ;
84
+ } else {
85
+ return false ;
86
+ }
87
+ } ) ;
88
+ }
69
89
} else {
70
- SetFastestLap ( [ ] ) ;
90
+ setFastestLap ( [ ] ) ;
71
91
}
72
92
} else {
73
- SetFastestLap ( [ ] ) ;
93
+ setFastestLap ( [ ] ) ;
74
94
}
75
95
76
96
race . averageLaps = getAverageWindows ( race . laps , raceConfig . averageLapsWindow ) ;
@@ -82,6 +102,7 @@ export const Timekeeper = () => {
82
102
} else {
83
103
setFastestAverageLap ( [ ] ) ;
84
104
}
105
+ // eslint-disable-next-line react-hooks/exhaustive-deps
85
106
} , [ race . laps ] ) ;
86
107
87
108
// handlers functions
@@ -115,7 +136,7 @@ export const Timekeeper = () => {
115
136
const resetRacehandler = ( ) => {
116
137
setRace ( defaultRace ) ;
117
138
setRaceConfig ( { } ) ;
118
- SetFastestLap ( [ ] ) ;
139
+ setFastestLap ( [ ] ) ;
119
140
setFastestAverageLap ( [ ] ) ;
120
141
121
142
setActiveStepIndex ( 0 ) ;
@@ -135,6 +156,7 @@ export const Timekeeper = () => {
135
156
fastestLap = { fastestLap }
136
157
fastestAverageLap = { fastestAverageLap }
137
158
raceConfig = { raceConfig }
159
+ setStartTime = { setStartTime }
138
160
onNext = { raceIsDoneHandler }
139
161
/>
140
162
) ;
@@ -149,6 +171,8 @@ export const Timekeeper = () => {
149
171
raceConfig = { raceConfig }
150
172
onAction = { actionHandler }
151
173
onNext = { resetRacehandler }
174
+ startTime = { startTime }
175
+ fetchLogsEnable = { fetchLogsEnable }
152
176
/>
153
177
) ;
154
178
break ;
0 commit comments