- digitaleInputsMockData.json angepasst: CGI-nahe Simulation mit CSV-Strings und Stringwerten - fetchDigitalInputsService.ts erweitert: - CSV-Zeilen werden automatisch in Arrays umgewandelt - Labels wie "'DE1','DE2'" werden korrekt aufgeteilt - Daten aus 4 CGI-Blöcken zu 32 Eingängen gemappt - ermöglicht realitätsnahe Tests in Entwicklungsumgebung ohne Produktion
30 lines
1018 B
TypeScript
30 lines
1018 B
TypeScript
// @/redux/thunks/getDigitalInputsThunk.ts
|
|
import { createAsyncThunk } from "@reduxjs/toolkit";
|
|
import { fetchDigitalInputsService } from "@/services/fetchDigitalInputsService";
|
|
import { setInputs } from "@/redux/slices/digitalInputsSlice";
|
|
|
|
/**
|
|
* Holt digitale Eingänge von der API und speichert sie in Redux.
|
|
*/
|
|
export const getDigitalInputsThunk = createAsyncThunk(
|
|
"digitalInputs/fetchDigitalInputs",
|
|
async (_, { dispatch }) => {
|
|
if (typeof window === "undefined") return;
|
|
|
|
try {
|
|
const data = await fetchDigitalInputsService();
|
|
if (data) {
|
|
// Map data to ensure all DigitalInput properties are present
|
|
const mappedData = data.map((item: any) => ({
|
|
...item,
|
|
flutter: item.flutter ?? false,
|
|
zaehlerAktiv: item.zaehlerAktiv ?? false,
|
|
}));
|
|
dispatch(setInputs(mappedData)); // ✅ Redux mit API-Daten füllen
|
|
}
|
|
} catch (error) {
|
|
console.error("❌ Fehler beim Laden der digitalen Eingänge:", error);
|
|
}
|
|
}
|
|
);
|