fix: ConfirmModal-Zustand in Redux ausgelagert zur Stabilisierung
- Neuen confirmModalSlice erstellt für globale Steuerung des Bestätigungsdialogs - Zustand wird nun nicht mehr durch Re-Renders oder Komponentenneuaufbau zurückgesetzt - ConfirmModal in KueEinstellung.tsx vollständig an Redux angebunden - Flackern und automatisches Schließen nach 10–15 Sekunden dauerhaft behoben
This commit is contained in:
@@ -6,6 +6,6 @@ NEXT_PUBLIC_USE_MOCK_BACKEND_LOOP_START=false
|
|||||||
NEXT_PUBLIC_EXPORT_STATIC=false
|
NEXT_PUBLIC_EXPORT_STATIC=false
|
||||||
NEXT_PUBLIC_USE_CGI=false
|
NEXT_PUBLIC_USE_CGI=false
|
||||||
# App-Versionsnummer
|
# App-Versionsnummer
|
||||||
NEXT_PUBLIC_APP_VERSION=1.6.521
|
NEXT_PUBLIC_APP_VERSION=1.6.522
|
||||||
NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter)
|
NEXT_PUBLIC_CPL_MODE=json # json (Entwicklungsumgebung) oder jsSimulatedProd (CPL ->CGI-Interface-Simulator) oder production (CPL-> CGI-Interface Platzhalter)
|
||||||
|
|
||||||
|
|||||||
@@ -5,5 +5,5 @@ NEXT_PUBLIC_CPL_API_PATH=/CPL
|
|||||||
NEXT_PUBLIC_EXPORT_STATIC=true
|
NEXT_PUBLIC_EXPORT_STATIC=true
|
||||||
NEXT_PUBLIC_USE_CGI=true
|
NEXT_PUBLIC_USE_CGI=true
|
||||||
# App-Versionsnummer
|
# App-Versionsnummer
|
||||||
NEXT_PUBLIC_APP_VERSION=1.6.521
|
NEXT_PUBLIC_APP_VERSION=1.6.522
|
||||||
NEXT_PUBLIC_CPL_MODE=production
|
NEXT_PUBLIC_CPL_MODE=production
|
||||||
11
CHANGELOG.md
11
CHANGELOG.md
@@ -1,3 +1,14 @@
|
|||||||
|
## [1.6.522] – 2025-07-02
|
||||||
|
|
||||||
|
- feat: Auth-Status bei App-Start aus localStorage laden und in Redux speichern
|
||||||
|
|
||||||
|
- fetchAuthService erstellt zum Auslesen von isAdminLoggedIn aus localStorage
|
||||||
|
- getAuthThunks Thunk implementiert zur Initialisierung von authSlice
|
||||||
|
- authSlice erweitert um setIsAdminLoggedIn Reducer
|
||||||
|
- dispatch(getAuthThunks()) in _app.tsx integriert für automatische Initialisierung bei App-Start
|
||||||
|
- Flackern und falscher Admin-Status nach Reload dauerhaft behoben
|
||||||
|
|
||||||
|
---
|
||||||
## [1.6.521] – 2025-07-02
|
## [1.6.521] – 2025-07-02
|
||||||
|
|
||||||
- refactor: Admin-Status direkt aus Redux ausgelesen und Props entfernt
|
- refactor: Admin-Status direkt aus Redux ausgelesen und Props entfernt
|
||||||
|
|||||||
@@ -9,6 +9,10 @@ import firmwareUpdate from "../handlers/firmwareUpdate";
|
|||||||
import ProgressModal from "@/components/main/settingsPageComponents/modals/ProgressModal";
|
import ProgressModal from "@/components/main/settingsPageComponents/modals/ProgressModal";
|
||||||
import { toast } from "react-toastify";
|
import { toast } from "react-toastify";
|
||||||
import ConfirmModal from "@/components/common/ConfirmModal";
|
import ConfirmModal from "@/components/common/ConfirmModal";
|
||||||
|
import {
|
||||||
|
openConfirmModal,
|
||||||
|
closeConfirmModal,
|
||||||
|
} from "@/redux/slices/confirmModalSlice";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
slot: number;
|
slot: number;
|
||||||
@@ -49,7 +53,9 @@ export default function KueEinstellung({
|
|||||||
);
|
);
|
||||||
const [isAdminLoggedIn] = useState(() => reduxAdmin);
|
const [isAdminLoggedIn] = useState(() => reduxAdmin);
|
||||||
|
|
||||||
const [showConfirmModal, setShowConfirmModal] = useState(false);
|
const showConfirmModal = useSelector(
|
||||||
|
(state: RootState) => state.confirmModal.open
|
||||||
|
);
|
||||||
|
|
||||||
const [isUpdating, setIsUpdating] = useState(false);
|
const [isUpdating, setIsUpdating] = useState(false);
|
||||||
const [progress, setProgress] = useState(0);
|
const [progress, setProgress] = useState(0);
|
||||||
@@ -243,7 +249,7 @@ export default function KueEinstellung({
|
|||||||
{isAdminLoggedIn && (
|
{isAdminLoggedIn && (
|
||||||
<>
|
<>
|
||||||
<button
|
<button
|
||||||
onClick={() => setShowConfirmModal(true)}
|
onClick={() => dispatch(openConfirmModal())}
|
||||||
className="bg-littwin-blue text-white px-4 py-2 rounded flex items-center"
|
className="bg-littwin-blue text-white px-4 py-2 rounded flex items-center"
|
||||||
>
|
>
|
||||||
Firmware Update
|
Firmware Update
|
||||||
@@ -255,9 +261,9 @@ export default function KueEinstellung({
|
|||||||
open={showConfirmModal}
|
open={showConfirmModal}
|
||||||
title="Firmware-Update starten?"
|
title="Firmware-Update starten?"
|
||||||
message="⚠️ Das Firmware-Update kann einige Minuten dauern. Möchten Sie wirklich fortfahren?"
|
message="⚠️ Das Firmware-Update kann einige Minuten dauern. Möchten Sie wirklich fortfahren?"
|
||||||
onCancel={() => setShowConfirmModal(false)}
|
onCancel={() => dispatch(closeConfirmModal())}
|
||||||
onConfirm={async () => {
|
onConfirm={async () => {
|
||||||
setShowConfirmModal(false);
|
dispatch(closeConfirmModal());
|
||||||
toast.info("Firmware-Update gestartet. Bitte warten...");
|
toast.info("Firmware-Update gestartet. Bitte warten...");
|
||||||
setIsUpdating(true);
|
setIsUpdating(true);
|
||||||
setProgress(0);
|
setProgress(0);
|
||||||
|
|||||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "cpl-v4",
|
"name": "cpl-v4",
|
||||||
"version": "1.6.521",
|
"version": "1.6.522",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "cpl-v4",
|
"name": "cpl-v4",
|
||||||
"version": "1.6.521",
|
"version": "1.6.522",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@fontsource/roboto": "^5.1.0",
|
"@fontsource/roboto": "^5.1.0",
|
||||||
"@iconify-icons/ri": "^1.2.10",
|
"@iconify-icons/ri": "^1.2.10",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "cpl-v4",
|
"name": "cpl-v4",
|
||||||
"version": "1.6.521",
|
"version": "1.6.522",
|
||||||
"private": true,
|
"private": true,
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "next dev",
|
"dev": "next dev",
|
||||||
|
|||||||
29
redux/slices/confirmModalSlice.ts
Normal file
29
redux/slices/confirmModalSlice.ts
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
import { createSlice, PayloadAction } from "@reduxjs/toolkit";
|
||||||
|
|
||||||
|
interface ConfirmModalState {
|
||||||
|
open: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
const initialState: ConfirmModalState = {
|
||||||
|
open: false,
|
||||||
|
};
|
||||||
|
|
||||||
|
export const confirmModalSlice = createSlice({
|
||||||
|
name: "confirmModal",
|
||||||
|
initialState,
|
||||||
|
reducers: {
|
||||||
|
openConfirmModal: (state) => {
|
||||||
|
state.open = true;
|
||||||
|
},
|
||||||
|
closeConfirmModal: (state) => {
|
||||||
|
state.open = false;
|
||||||
|
},
|
||||||
|
setConfirmModal: (state, action: PayloadAction<boolean>) => {
|
||||||
|
state.open = action.payload;
|
||||||
|
},
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export const { openConfirmModal, closeConfirmModal, setConfirmModal } =
|
||||||
|
confirmModalSlice.actions;
|
||||||
|
export default confirmModalSlice.reducer;
|
||||||
@@ -27,6 +27,7 @@ import analogInputsHistoryReducer from "./slices/analogInputsHistorySlice";
|
|||||||
import selectedAnalogInputReducer from "./slices/selectedAnalogInputSlice";
|
import selectedAnalogInputReducer from "./slices/selectedAnalogInputSlice";
|
||||||
import messagesReducer from "./slices/messagesSlice";
|
import messagesReducer from "./slices/messagesSlice";
|
||||||
import firmwareUpdateReducer from "@/redux/slices/firmwareUpdateSlice";
|
import firmwareUpdateReducer from "@/redux/slices/firmwareUpdateSlice";
|
||||||
|
import confirmModalReducer from "./slices/confirmModalSlice";
|
||||||
|
|
||||||
const store = configureStore({
|
const store = configureStore({
|
||||||
reducer: {
|
reducer: {
|
||||||
@@ -56,6 +57,7 @@ const store = configureStore({
|
|||||||
selectedAnalogInput: selectedAnalogInputReducer,
|
selectedAnalogInput: selectedAnalogInputReducer,
|
||||||
messages: messagesReducer,
|
messages: messagesReducer,
|
||||||
firmwareUpdate: firmwareUpdateReducer,
|
firmwareUpdate: firmwareUpdateReducer,
|
||||||
|
confirmModal: confirmModalReducer,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user