Fix minor issues in chat

This commit is contained in:
Luong Doan 2021-06-19 06:09:16 +00:00
parent 231687e081
commit a9e7a58e95
2 changed files with 8 additions and 78 deletions

View file

@ -1,76 +0,0 @@
import json
from channels.generic.websocket import AsyncWebsocketConsumer
from .models import Message
from django.urls import reverse
from django.http import HttpResponse, HttpResponseRedirect
from django.core import serializers
from judge.jinja2.gravatar import gravatar
from judge.models.profile import Profile
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
self.room_name = 'room'
self.room_group_name = 'chat_%s' % self.room_name
# Join room group
await self.channel_layer.group_add(
self.room_group_name,
self.channel_name,
)
await self.accept()
async def disconnect(self, close_code):
# Leave room group
await self.channel_layer.group_discard(
self.room_group_name,
self.channel_name,
)
# Receive message from WebSocket
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json['message']
author = self.scope['user']
author = Profile.objects.get(user=author)
message['author'] = author.username
message['css_class'] = author.css_class
message['image'] = gravatar(author, 32)
message_saved = save_data_and_return(message, author)
message['time'] = message_saved[0]['fields']['time']
message['id'] = message_saved[0]['pk']
# Send message to room group
await self.channel_layer.group_send(
self.room_group_name,
{
'type': 'chat_message',
'message': message,
},
)
# Receive message from room group
async def chat_message(self, event):
message = event['message']
# Send message to WebSocket
await self.send(text_data=json.dumps({
'message': message,
}))
# return time
def save_data_and_return(message, author):
new_message = Message(body=message['body'],
author=author,
)
new_message.save()
json_data = serializers.serialize("json",
Message.objects
.filter(pk=new_message.id)
)
return json.loads(json_data)

View file

@ -124,12 +124,14 @@
body: body, body: body,
}; };
$('#chat-input').val('');
$.post("{{ url('post_chat_message') }}", message) $.post("{{ url('post_chat_message') }}", message)
.fail(function(res) { .fail(function(res) {
console.log('Fail to send message'); console.log('Fail to send message');
}) })
.done(function(res, status) { .done(function(res, status) {
$('#chat-input').val('').focus(); $('#chat-input').focus();
}) })
} }
}); });
@ -196,6 +198,10 @@
}) })
}) })
setInterval(function() {
$('#refresh-button').click();
}, 5 * 60 * 1000);
$('#chat-box').scrollTop($('#chat-box')[0].scrollHeight); $('#chat-box').scrollTop($('#chat-box')[0].scrollHeight);
remove_day_if_today(); remove_day_if_today();
load_dynamic_update({{last_msg}}); load_dynamic_update({{last_msg}});
@ -256,4 +262,4 @@
</div> </div>
</div> </div>
{% endblock body %} {% endblock body %}