- Renamed all slice names (createSlice `name` attribute) to match their file names (e.g. loopChartSlice, authSlice, kueDataSlice etc.) - Updated `store.ts` to register each reducer with consistent key names (e.g. state.loopChartSlice instead of state.loopChart) - Adjusted all `useSelector` and Redux state accesses across the codebase - Improves maintainability, searchability and consistency across files and Redux DevTools
42 lines
961 B
TypeScript
42 lines
961 B
TypeScript
// slices/digitalInputsSlice.ts
|
|
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
|
|
|
interface DigitalInput {
|
|
id: number;
|
|
label: string;
|
|
status: boolean;
|
|
counter: number;
|
|
flutter: number;
|
|
}
|
|
|
|
interface DigitalInputsState {
|
|
inputs: DigitalInput[];
|
|
}
|
|
|
|
const initialState: DigitalInputsState = {
|
|
inputs: [],
|
|
};
|
|
|
|
const digitalInputsSlice = createSlice({
|
|
name: "digitalInputsSlice",
|
|
initialState,
|
|
reducers: {
|
|
setInputs: (state, action: PayloadAction<DigitalInput[]>) => {
|
|
state.inputs = action.payload;
|
|
},
|
|
updateInputStatus: (
|
|
state,
|
|
action: PayloadAction<{ id: number; status: boolean }>
|
|
) => {
|
|
const { id, status } = action.payload;
|
|
const input = state.inputs.find((input) => input.id === id);
|
|
if (input) {
|
|
input.status = status;
|
|
}
|
|
},
|
|
},
|
|
});
|
|
|
|
export const { setInputs, updateInputStatus } = digitalInputsSlice.actions;
|
|
export default digitalInputsSlice.reducer;
|