diff --git a/osinaweb/db.sqlite3 b/osinaweb/db.sqlite3
index 735b2fed..b864a39c 100644
Binary files a/osinaweb/db.sqlite3 and b/osinaweb/db.sqlite3 differ
diff --git a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc
index ea295c47..b66b1e0a 100644
Binary files a/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc and b/osinaweb/osichat/__pycache__/consumers.cpython-310.pyc differ
diff --git a/osinaweb/osichat/consumers.py b/osinaweb/osichat/consumers.py
index aa8d91fa..5929236b 100644
--- a/osinaweb/osichat/consumers.py
+++ b/osinaweb/osichat/consumers.py
@@ -69,7 +69,10 @@ class OsitcomChatRoom(WebsocketConsumer):
if event_type == 'load_chat':
self.client_type = text_data_json.get('client_type')
- self.load_chat_handler()
+ event = {
+ 'reconnecting' : text_data_json.get('reconnecting')
+ }
+ self.load_chat_handler(event)
if event_type == 'start_conversation':
chat_room = ChatRoom.objects.create(
@@ -91,6 +94,18 @@ class OsitcomChatRoom(WebsocketConsumer):
self.session_id, event
)
+ if event_type == 'typing':
+ print(text_data_json.get('typing_status'))
+ print(text_data_json.get('user_id'))
+ event = {
+ 'type': 'typing_handler',
+ 'user_id': text_data_json.get('user_id'),
+ 'typing_status': text_data_json.get('typing_status')
+ }
+ async_to_sync(self.channel_layer.group_send)(
+ self.session_id, event
+ )
+
if event_type == 'send_message':
if text_data_json.get('user_id'):
member = get_object_or_404(User, id=text_data_json.get('user_id'))
@@ -191,7 +206,9 @@ class OsitcomChatRoom(WebsocketConsumer):
- def load_chat_handler(self):
+
+
+ def load_chat_handler(self, event):
if self.chat_room:
chat_room = self.chat_room
chat_room_messages = ChatMessage.objects.filter(room=chat_room).order_by('date_sent')
@@ -203,13 +220,14 @@ class OsitcomChatRoom(WebsocketConsumer):
'chat_room_messages': chat_room_messages,
}
if self.client_type == 'mobile_admin':
- chat_room_data = model_to_dict(chat_room)
- chat_room_messages_data = [model_to_dict(message) for message in chat_room_messages]
- self.send(text_data=json.dumps({
- 'event_type': 'load_chat',
- 'chat_room_data': chat_room_data,
- 'chat_room_messages_data': chat_room_messages_data
- },cls=DjangoJSONEncoder))
+ chat_room_data = model_to_dict(chat_room)
+ chat_room_messages_data = [model_to_dict(message) for message in chat_room_messages]
+ self.send(text_data=json.dumps({
+ 'event_type': 'load_chat',
+ 'chat_room_data': chat_room_data,
+ 'chat_room_messages_data': chat_room_messages_data
+ },cls=DjangoJSONEncoder))
+
elif self.client_type == 'website_admin':
html = render_to_string("chat_templates/chat-widget.html", context=context)
self.send(text_data=json.dumps({
@@ -217,7 +235,13 @@ class OsitcomChatRoom(WebsocketConsumer):
'html': html,
}))
else:
- html = render_to_string("chat-widget.html", context=context)
+ if event.get('reconnecting') == 'False':
+ html = render_to_string("chat-widget.html", context=context)
+ else:
+ if chat_room:
+ html = render_to_string("chat-room.html", context=context)
+ else:
+ html = render_to_string("start-conversation.html", context=context)
self.send(text_data=json.dumps({
'event_type': 'load_chat',
'html': html,
@@ -241,6 +265,26 @@ class OsitcomChatRoom(WebsocketConsumer):
'html': html,
}))
+ def typing_handler(self, event):
+ if event.get('typing_status') == 'typing':
+ if event.get('user_id'):
+ member = get_object_or_404(User, id=event.get('user_id'))
+ else:
+ member = None
+
+ context = {
+ 'member': member,
+ }
+
+ html = render_to_string("partials/typing.html", context=context)
+ self.send(text_data=json.dumps({
+ 'event_type': 'typing',
+ 'html': html,
+ }))
+ else:
+ self.send(text_data=json.dumps({
+ 'event_type': 'stopped_typing',
+ }))
def send_message_handler(self, event):
chat_message = get_object_or_404(ChatMessage, id=event['chat_message_id'])
@@ -280,7 +324,6 @@ class OsitcomChatRoom(WebsocketConsumer):
'html': html,
}))
-
def update_read_messages_handler(self, event):
latest_unread_message_id = event.get('latest_unread_message_id')
if latest_unread_message_id:
diff --git a/osinaweb/osichat/templates/chat-room.html b/osinaweb/osichat/templates/chat-room.html
index fb6eeb63..6966c2a6 100644
--- a/osinaweb/osichat/templates/chat-room.html
+++ b/osinaweb/osichat/templates/chat-room.html
@@ -50,7 +50,7 @@
class="w-[30px] h-[30px] rounded-full shadow-md text-white flex justify-center items-center bg-osiblue uppercase text-xs">
{% if message.member.staffprofile.image %}
+ src="http://192.168.1.106:8000{{message.member.staffprofile.image.url}}">
{% else %}
{{message.member.first_name.0}}{{message.member.last_name.0}}
{% endif %} @@ -95,7 +95,7 @@ {% else %} {% if message.chatmessageattachment.is_image %}