Skip to content

Commit 8a958cb

Browse files
committed
refactor(tpl): refine deleting process
1 parent 3ac480d commit 8a958cb

File tree

3 files changed

+42
-46
lines changed

3 files changed

+42
-46
lines changed

src/serverHandler/mutate.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,11 @@ func (h *handler) mutate(w http.ResponseWriter, r *http.Request, data *responseD
2929
header.Set("Cache-Control", "public, max-age=0")
3030
w.WriteHeader(http.StatusOK)
3131

32-
w.Write([]byte{'{', '"', 's', 'u', 'c', 'c', 'e', 's', 's', '"', ':'})
3332
if success {
34-
w.Write([]byte{'t', 'r', 'u', 'e'})
33+
w.Write([]byte(`{"success":true}`))
3534
} else {
36-
w.Write([]byte{'f', 'a', 'l', 's', 'e'})
35+
w.Write([]byte(`{"success":false}`))
3736
}
38-
w.Write([]byte{'}'})
3937
} else {
4038
reqPath := r.RequestURI
4139
qsIndex := strings.IndexByte(reqPath, '?')

src/tpl/asset/main.js

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -691,30 +691,30 @@
691691
return;
692692
}
693693

694-
var target = e.target;
694+
var elLink = e.target;
695+
696+
function onComplete() {
697+
elLink = null;
698+
}
699+
700+
function onLoad() {
701+
var elItem = elLink;
702+
while (elItem && elItem.nodeName !== 'LI') {
703+
elItem = elItem.parentNode;
704+
}
705+
if (!elItem) {
706+
return;
707+
}
708+
var elItemParent = elItem.parentNode;
709+
elItemParent && elItemParent.removeChild(elItem);
710+
}
695711

696712
var xhr = new XMLHttpRequest();
697-
xhr.open('POST', target.href);
698-
xhr.onload = function () {
699-
var item = target;
700-
var parentNode = item.parentNode;
701-
while (item.nodeName !== 'LI') {
702-
if (!parentNode) {
703-
break;
704-
}
705-
item = parentNode;
706-
parentNode = item.parentNode;
707-
}
708-
if (parentNode) {
709-
parentNode.removeChild(item);
710-
}
711-
item = null;
712-
parentNode = null;
713-
target = null;
714-
};
715-
xhr.onerror = xhr.onabort = function () {
716-
target = null;
717-
};
713+
xhr.open('POST', elLink.href); // will retrieve deleted result into bfcache
714+
xhr.addEventListener('load', onLoad);
715+
xhr.addEventListener('load', onComplete);
716+
xhr.addEventListener('error', onComplete);
717+
xhr.addEventListener('abort', onComplete);
718718
xhr.send();
719719
e.preventDefault();
720720
return false;

src/tpl/asset/main.js.go

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -606,29 +606,27 @@ itemList.addEventListener('click', function (e) {
606606
if (e.defaultPrevented || !e.target || e.target.className.indexOf('delete') < 0) {
607607
return;
608608
}
609-
var target = e.target;
610-
var xhr = new XMLHttpRequest();
611-
xhr.open('POST', target.href);
612-
xhr.onload = function () {
613-
var item = target;
614-
var parentNode = item.parentNode;
615-
while (item.nodeName !== 'LI') {
616-
if (!parentNode) {
617-
break;
609+
var elLink = e.target;
610+
function onComplete() {
611+
elLink = null;
618612
}
619-
item = parentNode;
620-
parentNode = item.parentNode;
613+
function onLoad() {
614+
var elItem = elLink;
615+
while (elItem && elItem.nodeName !== 'LI') {
616+
elItem = elItem.parentNode;
621617
}
622-
if (parentNode) {
623-
parentNode.removeChild(item);
618+
if (!elItem) {
619+
return;
624620
}
625-
item = null;
626-
parentNode = null;
627-
target = null;
628-
};
629-
xhr.onerror = xhr.onabort = function () {
630-
target = null;
631-
};
621+
var elItemParent = elItem.parentNode;
622+
elItemParent && elItemParent.removeChild(elItem);
623+
}
624+
var xhr = new XMLHttpRequest();
625+
xhr.open('POST', elLink.href); // will retrieve deleted result into bfcache
626+
xhr.addEventListener('load', onLoad);
627+
xhr.addEventListener('load', onComplete);
628+
xhr.addEventListener('error', onComplete);
629+
xhr.addEventListener('abort', onComplete);
632630
xhr.send();
633631
e.preventDefault();
634632
return false;

0 commit comments

Comments
 (0)