feat: KVZ API JSON Data

This commit is contained in:
ISA
2025-07-31 13:44:30 +02:00
parent 97eb40e1c6
commit 421e1f5425
18 changed files with 750 additions and 143 deletions

67
redux/thunks/kvzThunks.ts Normal file
View File

@@ -0,0 +1,67 @@
// redux/thunks/kvzThunks.ts
import { createAsyncThunk } from "@reduxjs/toolkit";
import {
fetchKvzData,
updateKvzSettings,
} from "../../services/fetchKvzDataService";
import { setKueData } from "../slices/kueDataSlice";
/**
* Lädt KVZ-Daten von der API und aktualisiert Redux Store
*/
export const loadKvzData = createAsyncThunk(
"kvz/loadData",
async (_, { dispatch }) => {
try {
const data = await fetchKvzData();
// KVZ-Daten in Redux Store laden
dispatch(
setKueData({
kvzPresence: data.kvzPresence,
kvzActive: data.kvzActive,
kvzStatus: data.kvzStatus,
})
);
return data;
} catch (error) {
console.error("Fehler beim Laden der KVZ-Daten:", error);
throw error;
}
}
);
/**
* Aktualisiert KVZ-Einstellungen und synchronisiert Redux Store
*/
export const updateKvzData = createAsyncThunk(
"kvz/updateData",
async (
updates: Array<{
key: "kvzPresence" | "kvzActive" | "kvzStatus";
slot?: number;
ledIndex?: number;
value: number;
}>,
{ dispatch }
) => {
try {
const data = await updateKvzSettings(updates);
// Aktualisierte Daten in Redux Store laden
dispatch(
setKueData({
kvzPresence: data.kvzPresence,
kvzActive: data.kvzActive,
kvzStatus: data.kvzStatus,
})
);
return data;
} catch (error) {
console.error("Fehler beim Update der KVZ-Daten:", error);
throw error;
}
}
);