feat: #27 discussion message publish realtime
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)
|
||||
@@ -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
|
||||
@@ -290,4 +290,5 @@ nav.navbar {
|
||||
|
||||
.message-section {
|
||||
margin-left: 5%;
|
||||
display: inline-block;
|
||||
}
|
||||
@@ -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()
|
||||
});
|
||||
}); */
|
||||
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
<div class="mt-5">
|
||||
{{ message.message }}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endmacro %}
|
||||
|
||||
@@ -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"})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user