From 78acaba766721d5fa40f9f8ebbc007bbf7c8bf46 Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 4 Aug 2022 10:47:06 -0600 Subject: [PATCH] Et2LinkList: Fix deleting links on unsaved entries deleted more than expected --- api/js/etemplate/Et2Link/Et2LinkList.ts | 27 +++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/api/js/etemplate/Et2Link/Et2LinkList.ts b/api/js/etemplate/Et2Link/Et2LinkList.ts index 493eb52983..b4105e9a22 100644 --- a/api/js/etemplate/Et2Link/Et2LinkList.ts +++ b/api/js/etemplate/Et2Link/Et2LinkList.ts @@ -296,15 +296,26 @@ export class Et2LinkList extends Et2LinkString link_element.classList.add("loading"); this.dispatchEvent(new CustomEvent("before_delete", {detail: link})); - egw.json("EGroupware\\Api\\Etemplate\\Widget\\Link::ajax_delete", [link.link_id]).sendRequest() - .then((data) => - { - if(data) - { - this.querySelectorAll("[slot='" + this._get_row_id(link) + "']").forEach(e => e.remove()); - } - }); + let removeLink = () => {this.querySelectorAll("[slot='" + this._get_row_id(link) + "']").forEach(e => e.remove());}; + + // Unsaved entry, had no ID yet + if(typeof this.entryId !== "string" && this.entryId[link.link_id]) + { + delete this.entryId[link.link_id]; + removeLink(); + } + else if(typeof this.entryId == "string" && link.link_id) + { + egw.json("EGroupware\\Api\\Etemplate\\Widget\\Link::ajax_delete", [link.link_id]).sendRequest() + .then((data) => + { + if(data) + { + removeLink(); + } + }); + } } /**