diff --git a/ChatServiceApp/funcs.py b/ChatServiceApp/funcs.py index 5899b3f..0d8331c 100644 --- a/ChatServiceApp/funcs.py +++ b/ChatServiceApp/funcs.py @@ -97,7 +97,7 @@ def update_chat(data): if data['receiver'] == data['cur_user']: # получаем правую панель с получателями # получатели - receivers, unread_msgs_count = get_chat_receivers_for_user(sender, receiver) + receivers, unread_msgs_count = get_chat_receivers_for_user(receiver) # собираем для сохранения в профиле # receivers_unread_msgs_count = sorted( # [{'id': item.id, 'unread_msgs_count': item.unread_msgs_count} for item in receivers], @@ -287,17 +287,30 @@ def get_chat_receivers_for_user(user, cur_receiver=None): msg.receiver.unread_msgs_count = 0 msg.receiver.last_msg = msg.text receivers_list.append(msg.receiver) + + + if msg.sender not in receivers_list and msg.sender != user: msg.sender.unread_msgs_count = 0 receivers_list.append(msg.sender) msg.sender.last_msg = msg.text - if msg.receiver == user:# and (not cur_receiver or msg.sender != cur_receiver): if msg.status == 'sended': i = receivers_list.index(msg.sender) receivers_list[i].unread_msgs_count += 1 unread_msgs_count += 1 + # if msg.status == 'sended': + # i = receivers_list.index(msg.sender) + # receivers_list[i].unread_msgs_count += 1 + # unread_msgs_count += 1 + + # if msg.receiver == user:# and (not cur_receiver or msg.sender != cur_receiver): + # if msg.status == 'sended': + # i = receivers_list.index(msg.sender) + # receivers_list[i].unread_msgs_count += 1 + # unread_msgs_count += 1 + return receivers_list, unread_msgs_count # receivers_list.extend((item.sender for item in receivers if item.sender != user)) diff --git a/ChatServiceApp/websocket_views.py b/ChatServiceApp/websocket_views.py index c0d8af4..e738604 100644 --- a/ChatServiceApp/websocket_views.py +++ b/ChatServiceApp/websocket_views.py @@ -55,23 +55,25 @@ class ChatConsumer(WebsocketConsumer): resDict ) - data.update({ - 'cur_user': receiver, - 'required_beep': True, - }) - Dict = update_chat(data) group_name = f'user_{receiver}' - resDict = { - 'type': 'update_chat', - 'sender': receiver, - 'receiver': sender, - 'group_name': group_name, - } - resDict.update(Dict) - async_to_sync(self.channel_layer.group_send)( - group_name, - resDict - ) + if group_name in self.channel_layer.groups.keys(): + data.update({ + 'cur_user': receiver, + 'required_beep': True, + }) + Dict = update_chat(data) + + resDict = { + 'type': 'update_chat', + 'sender': receiver, + 'receiver': sender, + 'group_name': group_name, + } + resDict.update(Dict) + async_to_sync(self.channel_layer.group_send)( + group_name, + resDict + ) def echo(self, data): print('ws echo')