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:
ISA
2025-05-23 14:28:10 +02:00
parent 96b36eb706
commit b69a3efae3
5 changed files with 54 additions and 10 deletions

View File

@@ -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
### ♻️ Refactor

View File

@@ -6,6 +6,7 @@ import { useSelector, useDispatch } from "react-redux";
import { selectMapLayersState } from "../../redux/slices/mapLayersSlice";
import { fetchPoiTypThunk } from "../../redux/thunks/database/fetchPoiTypThunk";
import { selectPoiTypData, selectPoiTypStatus } from "../../redux/slices/database/poiTypSlice";
import { deletePoiThunk } from "../../redux/thunks/database/deletePoiThunk";
const PoiUpdateModal = ({ onClose, poiData, onSubmit }) => {
const dispatch = useDispatch();
@@ -119,15 +120,9 @@ const PoiUpdateModal = ({ onClose, poiData, onSubmit }) => {
const handleDeletePoi = async () => {
if (confirm("Sind Sie sicher, dass Sie diesen POI löschen möchten?")) {
try {
const response = await fetch(`/api/talas_v5_DB/pois/deletePoi?id=${poiId}`, {
method: "DELETE",
});
if (response.ok) {
onClose();
window.location.reload(); // Aktualisiert die Seite nach dem Löschen
} else {
throw new Error("Fehler beim Löschen des POI.");
}
await dispatch(deletePoiThunk(poiId)).unwrap();
onClose();
window.location.reload();
} catch (error) {
console.error("Fehler beim Löschen des POI:", error);
alert("Fehler beim Löschen des POI.");

View File

@@ -1,2 +1,2 @@
// /config/appVersion
export const APP_VERSION = "1.1.161";
export const APP_VERSION = "1.1.162";

View 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);
}
});

View 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.");
}
};