refactor: POI-Löschfunktion über Redux Thunk deletePoiThunk umgesetzt
- fetch("/deletePoi") in PoiUpdateModal entfernt
- deletePoiService + deletePoiThunk eingeführt
- Kein Redux Slice nötig, da kein Status gespeichert wird
- Version auf 1.1.161 erhöht
This commit is contained in:
25
CHANGELOG.md
25
CHANGELOG.md
@@ -4,6 +4,31 @@ Alle bedeutenden Änderungen an diesem Projekt werden in dieser Datei dokumentie
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## [1.1.161] – 2025-05-23
|
||||||
|
|
||||||
|
### ♻️ Refactor
|
||||||
|
|
||||||
|
- Löschfunktion für POI (`handleDeletePoi`) in `PoiUpdateModal.js` refaktoriert
|
||||||
|
- Direkten `fetch(...)`-Aufruf entfernt und ersetzt durch:
|
||||||
|
- Service: `deletePoiService.js`
|
||||||
|
- Redux Thunk: `deletePoiThunk.js`
|
||||||
|
|
||||||
|
### 🧠 Architektur
|
||||||
|
|
||||||
|
- Für serverseitige Befehle (DELETE) wird kein Redux Slice benötigt
|
||||||
|
- Redux-Thunk ohne eigenen Status-Slice verwendet – schlank und wartbar
|
||||||
|
|
||||||
|
### ✅ Clean
|
||||||
|
|
||||||
|
- Einheitliche Struktur beibehalten: `Service → Thunk → Dispatch`
|
||||||
|
- Wiederverwendbarkeit verbessert (z. B. für spätere Delete-Buttons)
|
||||||
|
|
||||||
|
### 🔧 Version
|
||||||
|
|
||||||
|
- 📦 Version erhöht auf **1.1.161**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## [1.1.160] – 2025-05-23
|
## [1.1.160] – 2025-05-23
|
||||||
|
|
||||||
### ♻️ Refactor
|
### ♻️ Refactor
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import { useSelector, useDispatch } from "react-redux";
|
|||||||
import { selectMapLayersState } from "../../redux/slices/mapLayersSlice";
|
import { selectMapLayersState } from "../../redux/slices/mapLayersSlice";
|
||||||
import { fetchPoiTypThunk } from "../../redux/thunks/database/fetchPoiTypThunk";
|
import { fetchPoiTypThunk } from "../../redux/thunks/database/fetchPoiTypThunk";
|
||||||
import { selectPoiTypData, selectPoiTypStatus } from "../../redux/slices/database/poiTypSlice";
|
import { selectPoiTypData, selectPoiTypStatus } from "../../redux/slices/database/poiTypSlice";
|
||||||
|
import { deletePoiThunk } from "../../redux/thunks/database/deletePoiThunk";
|
||||||
|
|
||||||
const PoiUpdateModal = ({ onClose, poiData, onSubmit }) => {
|
const PoiUpdateModal = ({ onClose, poiData, onSubmit }) => {
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
@@ -119,15 +120,9 @@ const PoiUpdateModal = ({ onClose, poiData, onSubmit }) => {
|
|||||||
const handleDeletePoi = async () => {
|
const handleDeletePoi = async () => {
|
||||||
if (confirm("Sind Sie sicher, dass Sie diesen POI löschen möchten?")) {
|
if (confirm("Sind Sie sicher, dass Sie diesen POI löschen möchten?")) {
|
||||||
try {
|
try {
|
||||||
const response = await fetch(`/api/talas_v5_DB/pois/deletePoi?id=${poiId}`, {
|
await dispatch(deletePoiThunk(poiId)).unwrap();
|
||||||
method: "DELETE",
|
onClose();
|
||||||
});
|
window.location.reload();
|
||||||
if (response.ok) {
|
|
||||||
onClose();
|
|
||||||
window.location.reload(); // Aktualisiert die Seite nach dem Löschen
|
|
||||||
} else {
|
|
||||||
throw new Error("Fehler beim Löschen des POI.");
|
|
||||||
}
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error("Fehler beim Löschen des POI:", error);
|
console.error("Fehler beim Löschen des POI:", error);
|
||||||
alert("Fehler beim Löschen des POI.");
|
alert("Fehler beim Löschen des POI.");
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
// /config/appVersion
|
// /config/appVersion
|
||||||
export const APP_VERSION = "1.1.161";
|
export const APP_VERSION = "1.1.162";
|
||||||
|
|||||||
13
redux/thunks/database/deletePoiThunk.js
Normal file
13
redux/thunks/database/deletePoiThunk.js
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
// /redux/thunks/database/deletePoiThunk.js
|
||||||
|
|
||||||
|
import { createAsyncThunk } from "@reduxjs/toolkit";
|
||||||
|
import { deletePoiService } from "../../../services/database/deletePoiService";
|
||||||
|
|
||||||
|
export const deletePoiThunk = createAsyncThunk("poi/delete", async (id, thunkAPI) => {
|
||||||
|
try {
|
||||||
|
await deletePoiService(id);
|
||||||
|
return id; // Falls du später ID-basiertes Entfernen im Store brauchst
|
||||||
|
} catch (error) {
|
||||||
|
return thunkAPI.rejectWithValue(error.message);
|
||||||
|
}
|
||||||
|
});
|
||||||
11
services/database/deletePoiService.js
Normal file
11
services/database/deletePoiService.js
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
// /services/database/deletePoiService.js
|
||||||
|
|
||||||
|
export const deletePoiService = async (id) => {
|
||||||
|
const response = await fetch(`/api/talas_v5_DB/pois/deletePoi?id=${id}`, {
|
||||||
|
method: "DELETE",
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!response.ok) {
|
||||||
|
throw new Error("Fehler beim Löschen des POI.");
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user