Markdown.
This commit is contained in:
parent
1f5dc57d6f
commit
03c72e85f7
@ -5,3 +5,4 @@ class ChannelMessageModel(BaseModel):
|
||||
channel_uid = ModelField(name="channel_uid", required=True, kind=str)
|
||||
user_uid = ModelField(name="user_uid", required=True, kind=str)
|
||||
message = ModelField(name="message", required=True, kind=str)
|
||||
html = ModelField(name="html", required=False, kind=str)
|
||||
|
@ -1,14 +1,38 @@
|
||||
from snek.system.service import BaseService
|
||||
|
||||
import jinja2
|
||||
|
||||
class ChannelMessageService(BaseService):
|
||||
mapper_name = "channel_message"
|
||||
|
||||
async def create(self, channel_uid, user_uid, message):
|
||||
model = await self.new()
|
||||
|
||||
model["channel_uid"] = channel_uid
|
||||
model["user_uid"] = user_uid
|
||||
model["message"] = message
|
||||
|
||||
context = {
|
||||
|
||||
}
|
||||
|
||||
|
||||
record = model.record
|
||||
context.update(record)
|
||||
user = await self.app.services.user.get(uid=user_uid)
|
||||
context.update(dict(
|
||||
user_uid=user['uid'],
|
||||
username=user['username'],
|
||||
user_nick=user['nick']
|
||||
))
|
||||
try:
|
||||
template = self.app.jinja2_env.get_template("message.html")
|
||||
model["html"] = template.render(**context)
|
||||
except Exception as ex:
|
||||
print(ex,flush=True)
|
||||
print("RENDER",flush=True)
|
||||
print("RECORD",context,flush=True)
|
||||
|
||||
print("AFTER RENDER",flush=True)
|
||||
if await self.save(model):
|
||||
return model
|
||||
raise Exception(f"Failed to create channel message: {model.errors}.")
|
||||
|
@ -17,7 +17,8 @@ class ChatService(BaseService):
|
||||
user = await self.services.user.get(uid=user_uid)
|
||||
await self.services.notification.create_channel_message(channel_message_uid)
|
||||
sent_to_count = await self.services.socket.broadcast(channel_uid, dict(
|
||||
message=message,
|
||||
message=channel_message["message"],
|
||||
html=channel_message["html"],
|
||||
user_uid=user_uid,
|
||||
color=user['color'],
|
||||
channel_uid=channel_uid,
|
||||
|
@ -34,6 +34,7 @@ class MessageListElement extends HTMLElement {
|
||||
element.dataset.created_at = message.created_at
|
||||
element.dataset.user_uid = message.user_uid
|
||||
element.dataset.message = message.message
|
||||
|
||||
element.classList.add("message")
|
||||
if(!this.messages.length){
|
||||
element.classList.add("switch-user")
|
||||
@ -53,7 +54,8 @@ class MessageListElement extends HTMLElement {
|
||||
author.textContent = message.user_nick
|
||||
const text = document.createElement("div")
|
||||
text.classList.add("text")
|
||||
text.innerHTML = this.linkifyText(message.message)
|
||||
if(message.html)
|
||||
text.innerHTML = this.linkifyText(message.html)
|
||||
const time = document.createElement("div")
|
||||
time.classList.add("time")
|
||||
time.textContent = message.created_at
|
||||
@ -79,6 +81,7 @@ class MessageListElement extends HTMLElement {
|
||||
message.user_nick,
|
||||
message.color,
|
||||
message.message,
|
||||
message.html,
|
||||
message.created_at,
|
||||
message.updated_at
|
||||
)
|
||||
|
@ -1,14 +1,16 @@
|
||||
class MessageModel {
|
||||
message = null
|
||||
html = null
|
||||
user_uid = null
|
||||
channel_uid = null
|
||||
created_at = null
|
||||
updated_at = null
|
||||
element = null
|
||||
color = null
|
||||
constructor(uid, channel_uid,user_uid,user_nick, color,message,created_at, updated_at){
|
||||
constructor(uid, channel_uid,user_uid,user_nick, color,message,html,created_at, updated_at){
|
||||
this.uid = uid
|
||||
this.message = message
|
||||
this.html = html
|
||||
this.user_uid = user_uid
|
||||
this.user_nick = user_nick
|
||||
this.color = color
|
||||
|
@ -73,7 +73,8 @@ class RPCView(BaseView):
|
||||
channel_uid=message["channel_uid"],
|
||||
user_nick=user['nick'],
|
||||
message=message["message"],
|
||||
created_at=message["created_at"]
|
||||
created_at=message["created_at"],
|
||||
html=message['html']
|
||||
))
|
||||
return messages
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user