refactor: like and unlike
This commit is contained in:
parent
cc2c39d583
commit
e7b65db73a
1 changed files with 24 additions and 31 deletions
|
|
@ -2,21 +2,15 @@
|
|||
// MIT License. See license.txt
|
||||
|
||||
frappe.ui.is_liked = function (doc) {
|
||||
var liked = frappe.ui.get_liked_by(doc);
|
||||
return liked.indexOf(frappe.session.user) === -1 ? false : true;
|
||||
return frappe.ui.get_liked_by(doc).includes(frappe.session.user);
|
||||
};
|
||||
|
||||
frappe.ui.get_liked_by = function (doc) {
|
||||
var liked = doc._liked_by;
|
||||
if (liked) {
|
||||
liked = JSON.parse(liked);
|
||||
}
|
||||
|
||||
return liked || [];
|
||||
return doc._liked_by ? JSON.parse(doc._liked_by) : [];
|
||||
};
|
||||
|
||||
frappe.ui.toggle_like = function ($btn, doctype, name, callback) {
|
||||
var add = $btn.hasClass("not-liked") ? "Yes" : "No";
|
||||
const add = $btn.hasClass("not-liked") ? "Yes" : "No";
|
||||
// disable click
|
||||
$btn.css("pointer-events", "none");
|
||||
|
||||
|
|
@ -32,32 +26,31 @@ frappe.ui.toggle_like = function ($btn, doctype, name, callback) {
|
|||
// renable click
|
||||
$btn.css("pointer-events", "auto");
|
||||
|
||||
if (!r.exc) {
|
||||
for (const like of document.querySelectorAll(".like-action")) {
|
||||
if (like.dataset.name === name && like.dataset.doctype === doctype) {
|
||||
like.classList.toggle("not-liked", add === "No");
|
||||
like.classList.toggle("liked", add === "Yes");
|
||||
}
|
||||
if (r.exc) {
|
||||
return;
|
||||
}
|
||||
|
||||
$btn.toggleClass("not-liked", add === "No");
|
||||
$btn.toggleClass("liked", add === "Yes");
|
||||
|
||||
// update in locals (form)
|
||||
const doc = locals[doctype] && locals[doctype][name];
|
||||
if (doc) {
|
||||
let liked_by = frappe.ui.get_liked_by(doc);
|
||||
|
||||
if (add === "Yes" && !liked_by.includes(frappe.session.user)) {
|
||||
liked_by.push(frappe.session.user);
|
||||
}
|
||||
|
||||
// update in locals (form)
|
||||
var doc = locals[doctype] && locals[doctype][name];
|
||||
if (doc) {
|
||||
var liked_by = JSON.parse(doc._liked_by || "[]"),
|
||||
idx = liked_by.indexOf(frappe.session.user);
|
||||
if (add === "Yes") {
|
||||
if (idx === -1) liked_by.push(frappe.session.user);
|
||||
} else {
|
||||
if (idx !== -1) {
|
||||
liked_by = liked_by.slice(0, idx).concat(liked_by.slice(idx + 1));
|
||||
}
|
||||
}
|
||||
doc._liked_by = JSON.stringify(liked_by);
|
||||
if (add === "No" && liked_by.includes(frappe.session.user)) {
|
||||
liked_by = liked_by.filter((user) => user !== frappe.session.user);
|
||||
}
|
||||
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
doc._liked_by = JSON.stringify(liked_by);
|
||||
}
|
||||
|
||||
if (callback) {
|
||||
callback();
|
||||
}
|
||||
},
|
||||
});
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue