68 lines
1.5 KiB
TypeScript
68 lines
1.5 KiB
TypeScript
// 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;
|
|
}
|
|
}
|
|
);
|