chat v3
This commit is contained in:
SDE
2023-08-13 19:24:50 +03:00
parent 1c569b7358
commit bea4c1420b
2 changed files with 33 additions and 18 deletions

View File

@@ -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))

View File

@@ -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')