import { createSlice, PayloadAction } from '@reduxjs/toolkit'; import emitter from '../../utils/eventEmitter'; import store from '../store'; interface GeneratorMonitorState { acquisitionState: number; } const initialState: GeneratorMonitorState = { acquisitionState: 0, // 0: idle, 1: started, 2: success, 3: failure }; const generatorMonitorSlice = createSlice({ name: 'generatorMonitor', initialState, reducers: { setAcquisitionState: (state, action: PayloadAction) => { state.acquisitionState = action.payload; }, }, }); emitter.on('ACQUISITION_STARTED', () => { store.dispatch(setAcquisitionState(1)); // Start acquisition }); emitter.on('ACQUISITION_SUCCESS', () => { store.dispatch(setAcquisitionState(2)); // Acquisition success }); emitter.on('ACQUISITION_FAILURE', () => { store.dispatch(setAcquisitionState(3)); // Acquisition failure }); export const { setAcquisitionState } = generatorMonitorSlice.actions; export default generatorMonitorSlice.reducer;