Skip to content

Commit dcd8af4

Browse files
committed
Add address deletion functionality with confirmation alert
- Implemented `addressDelete` function in `AddressApi.js` for deleting addresses via API. - Integrated deletion functionality into contact details page with `handleDeleteAddress`. - Added `alertConfirm`, `alertSuccess`, and `alertError` for user feedback during the deletion process. - Updated delete button to trigger the new flow with enhanced confirmation and feedback.
1 parent 9ba7fed commit dcd8af4

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/lib/api/AddressApi.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,14 @@ export const addressUpdate = async (token, contactId, addressId, {street, city,
5252
postal_code
5353
})
5454
})
55+
}
56+
57+
export const addressDelete = async (token, contactId, addressId) => {
58+
return await fetch(`${import.meta.env.VITE_URL_API}/contacts/${contactId}/addresses/${addressId}`, {
59+
method: 'DELETE',
60+
headers: {
61+
'Accept': 'application/json',
62+
'Authorization': token
63+
}
64+
})
5565
}

src/routes/(user)/dashboard/contacts/[id]/+page.svelte

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
<script>
22
import {page} from "$app/state";
33
import {contactDetail} from "$lib/api/ContactApi.js";
4-
import {alertError} from "$lib/alert.js";
4+
import {alertConfirm, alertError, alertSuccess} from "$lib/alert.js";
55
import {onMount} from "svelte";
6-
import {addressList} from "$lib/api/AddressApi.js";
6+
import {addressDelete, addressList} from "$lib/api/AddressApi.js";
77
88
const token = localStorage.getItem('token');
99
const {id} = page.params;
@@ -18,6 +18,23 @@
1818
1919
let addresses = $state([]);
2020
21+
async function handleDeleteAddress(addressId) {
22+
if (!await alertConfirm("Are you sure you want to delete this address?")) {
23+
return;
24+
}
25+
26+
const response = await addressDelete(token, id, addressId);
27+
const responseBody = await response.json();
28+
console.log(responseBody);
29+
30+
if (response.status === 200) {
31+
await alertSuccess("Address deleted successfully");
32+
await fetchAddresses();
33+
} else {
34+
await alertError(responseBody.errors);
35+
}
36+
}
37+
2138
async function fetchAddresses() {
2239
const response = await addressList(token, id);
2340
const responseBody = await response.json();
@@ -164,7 +181,7 @@
164181
class="px-4 py-2 bg-gradient text-white rounded-lg hover:opacity-90 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2 focus:ring-offset-gray-800 transition-all duration-200 font-medium shadow-md flex items-center">
165182
<i class="fas fa-edit mr-2"></i> Edit
166183
</a>
167-
<button class="px-4 py-2 bg-gradient-to-r from-red-600 to-red-500 text-white rounded-lg hover:opacity-90 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:ring-offset-gray-800 transition-all duration-200 font-medium shadow-md flex items-center">
184+
<button onclick={() => handleDeleteAddress(address.id)} class="px-4 py-2 bg-gradient-to-r from-red-600 to-red-500 text-white rounded-lg hover:opacity-90 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:ring-offset-gray-800 transition-all duration-200 font-medium shadow-md flex items-center">
168185
<i class="fas fa-trash-alt mr-2"></i> Delete
169186
</button>
170187
</div>

0 commit comments

Comments
 (0)