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
|
||||
|
||||
### ♻️ Refactor
|
||||
|
||||
@@ -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.");
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
// /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