From f2ff769895442afb752eb76c290d81713864508c Mon Sep 17 00:00:00 2001 From: Vasilije Date: Tue, 28 Oct 2025 08:11:56 +0100 Subject: [PATCH 1/4] feat: Rename `deleteById` method to `delete` --- src/api/user.api.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/api/user.api.ts b/src/api/user.api.ts index 129bd57..004d9b2 100644 --- a/src/api/user.api.ts +++ b/src/api/user.api.ts @@ -47,7 +47,7 @@ export class UserAPI { return axiosInstance.put(`/password`, dto); } - static deleteById(id: number): Promise> { - return axiosInstance.delete(`/${id}`); + static delete(): Promise> { + return axiosInstance.delete(`/`); } } \ No newline at end of file From 68543798d0a7c8db70f27f577c7b76738e9ed595 Mon Sep 17 00:00:00 2001 From: Vasilije Date: Tue, 28 Oct 2025 08:13:25 +0100 Subject: [PATCH 2/4] feat: Correct deletion process messages --- src/views/user/UserLogin.vue | 2 ++ src/views/user/UserSettings.vue | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/views/user/UserLogin.vue b/src/views/user/UserLogin.vue index 3d9b9bd..8a550c1 100644 --- a/src/views/user/UserLogin.vue +++ b/src/views/user/UserLogin.vue @@ -35,6 +35,8 @@ const doLogin = () => { }).catch((err: AxiosError) => { if (err.response?.status == 400) { error.value = "Unknown user or password"; + } else if (err.response?.status == 401) { + error.value = "Account is deleted"; } else { console.error(err); error.value = "Unknown error. Check the console"; diff --git a/src/views/user/UserSettings.vue b/src/views/user/UserSettings.vue index 3db175f..9b82eca 100644 --- a/src/views/user/UserSettings.vue +++ b/src/views/user/UserSettings.vue @@ -154,11 +154,11 @@ const doDeleteUser = () => { formDeleteLoading.value = true; - UserAPI.deleteById(auth.id).then(() => { + UserAPI.delete().then(() => { auth.logout(); router.push("/"); }).catch((err: AxiosError) => { - errorDelete.value = err.response.data as string; + errorDelete.value = (err.response?.data as { error: string })?.error ?? "An unknown error occurred."; console.error(err); }).finally(() => { formDeleteLoading.value = false; From 992e5af560e6215b94f3be7d94758d4e2dba6615 Mon Sep 17 00:00:00 2001 From: Vasilije Date: Tue, 28 Oct 2025 15:43:00 +0100 Subject: [PATCH 3/4] feat: Print error message if Room loading fails --- src/views/room/RoomDetails.vue | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/views/room/RoomDetails.vue b/src/views/room/RoomDetails.vue index a8b8f96..7619be1 100644 --- a/src/views/room/RoomDetails.vue +++ b/src/views/room/RoomDetails.vue @@ -17,6 +17,7 @@ const room = ref(null); const roomAvailability = ref(null); const auth = useAuthStore(); const loading = ref(false); +const error = ref(''); onMounted(() => { auth.checkLocalStorage(); }); onMounted(() => loadRoom()); @@ -29,6 +30,7 @@ const loadRoom = () => { RoomAPI.findById(roomId).then((res: AxiosResponse) => { room.value = res.data; }).catch((err: AxiosError) => { + error.value = (err.response?.data as { error: string })?.error ?? "An unknown error occurred."; console.error(err); }).finally(() => { loading.value = false; @@ -58,6 +60,9 @@ const gotoReservation = () => {
+ + {{ error }} +

{{ room.name }}

{{ room.description }}

From ff7ec2ce87213552d731c4bee5e4415205937acc Mon Sep 17 00:00:00 2001 From: Vasilije Date: Wed, 29 Oct 2025 10:39:10 +0100 Subject: [PATCH 4/4] fix: Use more specific message about deletion of `User` or `Room` --- src/components/room/RoomActiveRequestEditor.vue | 12 ++++++++++-- src/views/room/RoomDetails.vue | 6 +++++- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/components/room/RoomActiveRequestEditor.vue b/src/components/room/RoomActiveRequestEditor.vue index 3e2d8b9..6829ca5 100644 --- a/src/components/room/RoomActiveRequestEditor.vue +++ b/src/components/room/RoomActiveRequestEditor.vue @@ -35,7 +35,11 @@ const acceptRequest = (reservationRequestId: number) => { loadRequests(); }) .catch((err: AxiosError) => { - requestsError.value = err.message; + if (err.response?.status === 404) { + requestsError.value = "Reservation request not found or deleted."; + } else { + requestsError.value = (err.response?.data as { error: string })?.error ?? "An unknown error occurred."; + } }) .finally(() => { loading.value = false; @@ -52,7 +56,11 @@ const rejectRequest = (reservationRequestId: number) => { loadRequests(); }) .catch((err: AxiosError) => { - requestsError.value = err.message; + if (err.response?.status === 404) { + requestsError.value = "Reservation request not found or deleted."; + } else { + requestsError.value = (err.response?.data as { error: string })?.error ?? "An unknown error occurred."; + } }) .finally(() => { loading.value = false; diff --git a/src/views/room/RoomDetails.vue b/src/views/room/RoomDetails.vue index 7619be1..f94b120 100644 --- a/src/views/room/RoomDetails.vue +++ b/src/views/room/RoomDetails.vue @@ -30,7 +30,11 @@ const loadRoom = () => { RoomAPI.findById(roomId).then((res: AxiosResponse) => { room.value = res.data; }).catch((err: AxiosError) => { - error.value = (err.response?.data as { error: string })?.error ?? "An unknown error occurred."; + if (err.response?.status === 404) { + error.value = "Room not found or deleted."; + } else { + error.value = (err.response?.data as { error: string })?.error ?? "An unknown error occurred."; + } console.error(err); }).finally(() => { loading.value = false;