Skip to content

Commit 15a94db

Browse files
committed
Deletion of an Agreement by its Id no works
1 parent 93db89b commit 15a94db

File tree

2 files changed

+56
-2
lines changed

2 files changed

+56
-2
lines changed

src/components/ui/coaching-sessions/agreements-list.tsx

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { MoreHorizontal, ArrowUpDown, Save } from "lucide-react";
2121
import { Id } from "@/types/general";
2222
import {
2323
createAgreement,
24+
deleteAgreement as deleteAgreementApi,
2425
updateAgreement as updateAgreementApi,
2526
fetchAgreementsByCoachingSessionId,
2627
} from "@/lib/api/agreements";
@@ -41,6 +42,8 @@ const AgreementsList: React.FC<{
4142
const addAgreement = () => {
4243
if (newAgreement.trim() === "") return;
4344

45+
// TODO: move this and the other backend calls outside of this component and trigger
46+
// an event instead, especially if we end up making this a reusable Agreement/Action component.
4447
createAgreement(coachingSessionId, userId, newAgreement)
4548
.then((agreement) => {
4649
console.trace(
@@ -100,7 +103,16 @@ const AgreementsList: React.FC<{
100103
};
101104

102105
const deleteAgreement = (id: Id) => {
103-
setAgreements(agreements.filter((agreement) => agreement.id !== id));
106+
deleteAgreementApi(id)
107+
.then((deleted_id) => {
108+
console.trace("Deleted Agreement id: " + JSON.stringify(deleted_id));
109+
110+
setAgreements(agreements.filter((agreement) => agreement.id !== id));
111+
})
112+
.catch((err) => {
113+
console.error("Failed to create new Agreement: " + err);
114+
throw err;
115+
});
104116
};
105117

106118
const sortAgreements = (column: keyof Agreement) => {

src/lib/api/agreements.ts

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,6 @@ export const createAgreement = async (
149149
} else if (error.response?.status == 500) {
150150
err = "Update of Agreement failed: internal server error.";
151151
} else {
152-
console.log(error);
153152
err = `Update of new Agreement failed.`;
154153
}
155154
});
@@ -161,3 +160,46 @@ export const createAgreement = async (
161160

162161
return updatedAgreement;
163162
};
163+
164+
export const deleteAgreement = async (
165+
id: Id
166+
): Promise<Agreement> => {
167+
const axios = require("axios");
168+
169+
var deletedAgreement: Agreement = defaultAgreement();
170+
var err: string = "";
171+
172+
const data = await axios
173+
.delete(`http://localhost:4000/agreements/${id}`, {
174+
withCredentials: true,
175+
setTimeout: 5000, // 5 seconds before timing out trying to log in with the backend
176+
headers: {
177+
"X-Version": "0.0.1",
178+
"Content-Type": "application/json",
179+
},
180+
})
181+
.then(function (response: AxiosResponse) {
182+
// handle success
183+
if (isAgreement(response.data.data)) {
184+
deletedAgreement = response.data.data;
185+
}
186+
})
187+
.catch(function (error: AxiosError) {
188+
// handle error
189+
console.error(error.response?.status);
190+
if (error.response?.status == 401) {
191+
err = "Deletion of Agreement failed: unauthorized.";
192+
} else if (error.response?.status == 500) {
193+
err = "Deletion of Agreement failed: internal server error.";
194+
} else {
195+
err = `Deletion of new Agreement failed.`;
196+
}
197+
});
198+
199+
if (err) {
200+
console.error(err);
201+
throw err;
202+
}
203+
204+
return deletedAgreement;
205+
};

0 commit comments

Comments
 (0)