adding confirmation dialog if to remove listing entirely from db or just hide it

This commit is contained in:
orangecoding
2026-02-03 14:04:40 +01:00
parent f66ceccbb4
commit 7b8e961b49
9 changed files with 415 additions and 157 deletions

View File

@@ -19,6 +19,7 @@ import 'react-range-slider-input/dist/style.css';
import './Map.less';
import { xhrDelete } from '../../services/xhr.js';
import { Link, useNavigate } from 'react-router-dom';
import ListingDeletionModal from '../../components/ListingDeletionModal.jsx';
const { Text } = Typography;
@@ -85,6 +86,22 @@ export default function MapView() {
const [showFilterBar, setShowFilterBar] = useState(false);
const [distanceFilter, setDistanceFilter] = useState(0);
const [deleteModalVisible, setDeleteModalVisible] = useState(false);
const [listingToDelete, setListingToDelete] = useState(null);
const confirmListingDeletion = async (hardDelete) => {
try {
await xhrDelete('/api/listings/', { ids: [listingToDelete], hardDelete });
Toast.success('Listing successfully removed');
fetchListings();
} catch (error) {
Toast.error(error.message || 'Error deleting listing');
} finally {
setDeleteModalVisible(false);
setListingToDelete(null);
}
};
useEffect(() => {
setPriceRange([0, getMaxPrice()]);
}, [listings]);
@@ -104,14 +121,9 @@ export default function MapView() {
};
useEffect(() => {
window.deleteListing = async (id) => {
try {
await xhrDelete('/api/listings/', { ids: [id] });
Toast.success('Listing successfully removed');
fetchListings();
} catch (error) {
Toast.error(error.message || 'Error deleting listing');
}
window.deleteListing = (id) => {
setListingToDelete(id);
setDeleteModalVisible(true);
};
window.viewDetails = (id) => {
@@ -562,6 +574,14 @@ export default function MapView() {
/>
<div ref={mapContainer} className="map-container" />
<ListingDeletionModal
visible={deleteModalVisible}
onConfirm={confirmListingDeletion}
onCancel={() => {
setDeleteModalVisible(false);
setListingToDelete(null);
}}
/>
</div>
);
}