fix: display of likes

This commit is contained in:
pateljannat
2021-02-24 15:19:30 +05:30
parent 063c7b67c5
commit 0f539aabcc
2 changed files with 34 additions and 33 deletions

View File

@@ -3,18 +3,21 @@ $('#req-evals').on('click', () => {
}) })
var set_likes = function (liked, likes) { var set_likes = function (liked, likes) {
let $btn = $('.btn-like'); let $btn = $('.btn-like');
$btn.text(`${likes} 👍`); likes ? $btn.text(`${likes} 👍`): $btn.text(`👍`);
if (liked) { if (liked) {
$btn.addClass('btn-secondary').removeClass('btn-default'); $btn.addClass('btn-dark').removeClass('btn-default');
} else { } else {
$btn.addClass('btn-default').removeClass('btn-secondary'); $btn.addClass('btn-default').removeClass('btn-dark');
} }
}; };
// set initial // set initial likes
/* frappe.call('community.www.hackathons.project.like', {project: frappe.form_dict.project}, (data) => { frappe.ready(() => {
var url_params = new URLSearchParams(window.location.search);
frappe.call('community.www.hackathons.project.like', { project: url_params.get("project"), initial: true }, (data) => {
set_likes(data.message.action == "Liked", data.message.likes) set_likes(data.message.action == "Liked", data.message.likes)
}) */ })
})
// like - unlike // like - unlike
$('.btn-like').on('click', (e) => { $('.btn-like').on('click', (e) => {

View File

@@ -14,7 +14,6 @@ def get_context(context):
context.hackathon = hackathon context.hackathon = hackathon
context.members = get_members(project) context.members = get_members(project)
context.confirmed_members = get_comfirmed_members(project) context.confirmed_members = get_comfirmed_members(project)
context.likes = get_project_likes(project)
context.updates = get_updates(project) context.updates = get_updates(project)
if frappe.session.user != "Guest": if frappe.session.user != "Guest":
context.my_project = get_my_projects() context.my_project = get_my_projects()
@@ -35,9 +34,6 @@ def get_members(project_name):
def get_comfirmed_members(project_name): def get_comfirmed_members(project_name):
return frappe.get_all("Community Project Member", {"project": project_name, "status": ("=", "Accepted") }, ['name']) return frappe.get_all("Community Project Member", {"project": project_name, "status": ("=", "Accepted") }, ['name'])
def get_project_likes(project_name):
return frappe.get_all("Community Project Like", {"project": project_name})
def get_updates(project_name): def get_updates(project_name):
return frappe.get_all('Community Project Update', {"project": project_name}, ['owner', 'creation', '`update` as project_update']) return frappe.get_all('Community Project Update', {"project": project_name}, ['owner', 'creation', '`update` as project_update'])
@@ -68,25 +64,27 @@ def join_request(id, action):
frappe.db.set_value('Community Project Member', id, 'status', 'Rejected') frappe.db.set_value('Community Project Member', id, 'status', 'Rejected')
def has_already_liked(project): def has_already_liked(project):
try: likes = frappe.db.get_value('Community Project Like', {"owner": frappe.session.user, "project": project})
likes = frappe.get_doc("Community Project Like", {"project": project, "owner": frappe.session.user})
return likes return likes
except frappe.DoesNotExistError:
return None
@frappe.whitelist() @frappe.whitelist()
def like(project): def get_project_likes(project):
return len(frappe.get_all("Community Project Like", {"project": project}))
@frappe.whitelist()
def like(project, initial=False):
liked_project = has_already_liked(project) liked_project = has_already_liked(project)
action = "Liked" if (liked_project and initial) else "Unliked"
if not initial:
if liked_project: if liked_project:
action = "Unliked" action = "Unliked"
liked_project.delete() frappe.get_doc("Community Project Like", liked_project).delete()
else: else:
action = "Liked" action = "Liked"
frappe.get_doc({"doctype": "Community Project Like","project": project}).save() frappe.get_doc({"doctype": "Community Project Like","project": project}).save()
likes = frappe.db.get_all("Community Project Like", {"project": project}) frappe.db.set_value("Community Project", project, "likes", get_project_likes(project))
frappe.db.set_value("Community Project", project, "likes", len(likes))
return { return {
"action": action, "action": action,
"likes": len(likes) "likes": get_project_likes(project)
} }