feat: #27 discussion message publish realtime

This commit is contained in:
pateljannat
2021-04-27 16:32:34 +05:30
parent ffdc554106
commit d68f1de796
7 changed files with 48 additions and 58 deletions

View File

@@ -94,7 +94,10 @@ web_include_css = "/assets/css/community.css"
doc_events = {
"User": {
"after_insert": "community.community.doctype.community_member.community_member.create_member_from_user"
}
},
"LMS Message": {
"after_insert": "community.lms.doctype.lms_message.lms_message.publish_message"
}
}
# Scheduled Tasks

View File

@@ -36,5 +36,4 @@ def save_message(message, batch):
"author": get_member_with_email(),
"message": message
})
doc.save(ignore_permissions=True)
return doc
doc.save(ignore_permissions=True)

View File

@@ -7,11 +7,11 @@ import frappe
from frappe.model.document import Document
from frappe import _
from frappe.utils import add_days, nowdate
class LMSMessage(Document):
def after_insert(self):
frappe.publish_realtime("new_lms_message", {"message":"JJannat"}, user="Administrator")
self.send_email()
def send_email(self):
membership = frappe.get_all("LMS Batch Membership", {"batch": self.batch}, ["member"])
for entry in membership:
@@ -60,4 +60,41 @@ def send_daily_digest():
"batches": group_by_batch
},
delayed = False
)
)
def publish_message(doc, method):
print(frappe.session.user)
email = frappe.db.get_value("Community Member", doc.author, "email")
session_user = True if email == frappe.session.user else False
message = get_message_template(doc, session_user)
js = """
$(".msger-input").val("");
$(".message-section").append(`{0}`);
""".format(message)
frappe.publish_realtime(event="eval_js", message=js, after_commit=True)
def get_message_template(message, session_user):
if session_user:
message.author_name = "You"
message.is_author = True
message.message_time = frappe.utils.pretty_date(message.creation)
template = """ <div class="discussion {% if message.is_author %} is-author {% endif %}">
<div class="d-flex justify-content-between">
<div class="font-weight-bold">
{{ message.author_name }}
</div>
<div class="text-muted">
{{ message.message_time }}
</div>
</div>
<div class="mt-5">
{{ message.message }}
</div>
</div>"""
template = frappe.render_template(template, {
"message": message
})
return template

View File

@@ -290,4 +290,5 @@ nav.navbar {
.message-section {
margin-left: 5%;
display: inline-block;
}

View File

@@ -1,15 +1,4 @@
frappe.ready(() => {
frappe.require("/assets/frappe/js/lib/socket.io.min.js");
frappe.require("/assets/frappe/js/frappe/socketio_client.js");
if (window.dev_server) {
frappe.boot.socketio_port = "9000" //use socketio port shown when bench starts
}
frappe.socketio.init();
console.log(frappe.socketio)
//frappe.socketio.emittedDemo("mydata");
frappe.realtime.on("new_lms_message", (data) => {
console.log(data)
})
if (frappe.session.user != "Guest") {
frappe.call({
'method': 'community.lms.doctype.lms_mentor_request.lms_mentor_request.has_requested',
@@ -25,21 +14,6 @@ frappe.ready(() => {
})
}
$(".list-batch").click((e) => {
var batch = decodeURIComponent($(e.currentTarget).attr("data-label"))
$(".current-batch").text(batch)
$(".send-message").attr("data-batch", batch)
frappe.call("community.www.courses.course.get_messages", { batch: batch }, (data) => {
if (data.message) {
$(".discussions").children().remove();
for (var i = 0; i < data.message.length; i++) {
var element = add_message(data.message[i])
$(".discussions").append(element);
}
}
})
})
$(".apply-now").click((e) => {
if (frappe.session.user == "Guest") {
window.location.href = "/login";
@@ -94,19 +68,4 @@ frappe.ready(() => {
})
})
})
/*
var show_enrollment_badge = () => {
$(".btn-enroll").addClass("hide");
$(".enrollment-badge").removeClass("hide");
}
var get_search_params = () => {
return new URLSearchParams(window.location.search)
}
$('.btn-enroll').on('click', (e) => {
frappe.call('community.www.courses.course.enroll', { course: get_search_params().get("course") }, (data) => {
show_enrollment_badge()
});
}); */

View File

@@ -35,7 +35,6 @@
<div class="mt-5">
{{ message.message }}
</div>
</div>
{% endfor %}
{% endmacro %}

View File

@@ -1,22 +1,18 @@
frappe.ready(() => {
const assets = [
"/assets/frappe/js/lib/socket.io.min.js",
"/assets/frappe/js/frappe/socketio_client.js"
"/assets/frappe/js/frappe/socketio_client.js",
]
frappe.require(assets, () => {
if (window.dev_server) {
frappe.boot.socketio_port = "9000" //use socketio port shown when bench starts
}
frappe.socketio.init(9000);
console.log(frappe.socketio)
})
frappe.realtime.on("new_lms_message", (data) => {
console.log(data)
})
setTimeout(() => {
window.scrollTo(0, document.body.scrollHeight);
}, 0);
}, 300);
$(".msger-send-btn").click((e) => {
e.preventDefault();
@@ -27,10 +23,6 @@ frappe.ready(() => {
"args": {
"batch": decodeURIComponent($(e.target).attr("data-batch")),
"message": message
},
"callback": (data) => {
$(".msger-input").val("");
frappe.realtime.publish("new_lms_message", {"message":"JJK"})
}
})
}