-
Notifications
You must be signed in to change notification settings - Fork 78
Expand file tree
/
Copy pathuseResetOnDisconnect.ts
More file actions
32 lines (30 loc) · 1.28 KB
/
Copy pathuseResetOnDisconnect.ts
File metadata and controls
32 lines (30 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import { useEffect, useRef } from 'react';
import { useSessionStore } from '../SessionStore/SessionStore';
import { useTelemetryStore } from '../TelemetryStore/TelemetryStore';
import { useLapTimesStore } from '../LapTimesStore/LapTimesStore';
import { usePitLapStore } from '../PitLapStore/PitLapStore';
import { useBattleGapStore } from '../BattleGapStore/BattleGapStore';
import { useFuelStore } from '../../components/FuelCalculator/FuelStore';
import logger from '@irdashies/utils/logger';
/**
* Resets all session-related stores when the iRacing sim disconnects.
* Watches for the running state to transition from true to false,
* then clears stale data so overlays start fresh on the next session.
*/
export const useResetOnDisconnect = (running: boolean) => {
const prevRunning = useRef(running);
useEffect(() => {
if (prevRunning.current && !running) {
logger.info(
'[useResetOnDisconnect] Sim disconnected, resetting all stores'
);
useSessionStore.getState().resetSession();
useTelemetryStore.getState().resetTelemetry();
useLapTimesStore.getState().reset();
usePitLapStore.getState().reset();
useBattleGapStore.getState().reset();
useFuelStore.getState().clearAllData();
}
prevRunning.current = running;
}, [running]);
};