generatorMonitorSlice.ts 1012 B

123456789101112131415161718192021222324252627282930313233343536
  1. import { createSlice, PayloadAction } from '@reduxjs/toolkit';
  2. import emitter from '../../utils/eventEmitter';
  3. import store from '../store';
  4. interface GeneratorMonitorState {
  5. acquisitionState: number;
  6. }
  7. const initialState: GeneratorMonitorState = {
  8. acquisitionState: 0, // 0: idle, 1: started, 2: success, 3: failure
  9. };
  10. const generatorMonitorSlice = createSlice({
  11. name: 'generatorMonitor',
  12. initialState,
  13. reducers: {
  14. setAcquisitionState: (state, action: PayloadAction<number>) => {
  15. state.acquisitionState = action.payload;
  16. },
  17. },
  18. });
  19. emitter.on('ACQUISITION_STARTED', () => {
  20. store.dispatch(setAcquisitionState(1)); // Start acquisition
  21. });
  22. emitter.on('ACQUISITION_SUCCESS', () => {
  23. store.dispatch(setAcquisitionState(2)); // Acquisition success
  24. });
  25. emitter.on('ACQUISITION_FAILURE', () => {
  26. store.dispatch(setAcquisitionState(3)); // Acquisition failure
  27. });
  28. export const { setAcquisitionState } = generatorMonitorSlice.actions;
  29. export default generatorMonitorSlice.reducer;