emile 10 months ago
parent 29f17f55eb
commit ae79fb555f

Binary file not shown.

@ -10,7 +10,14 @@ import threading
class OnlineUserConsumer(WebsocketConsumer): class OnlineUserConsumer(WebsocketConsumer):
def connect(self): def connect(self):
self.user = self.scope['user'] self.user = self.scope['user']
existing_connection = Connection.objects.filter(user=self.user).last()
if existing_connection:
self.connection = existing_connection
self.connection.online = True
self.connection.disconnected = False
self.connection.save()
else:
self.connection = Connection.objects.create(user=self.user, online=True)
async_to_sync(self.channel_layer.group_add)( async_to_sync(self.channel_layer.group_add)(
'online_users', self.channel_name 'online_users', self.channel_name
@ -34,11 +41,17 @@ class OnlineUserConsumer(WebsocketConsumer):
self.modify_online_user() self.modify_online_user()
def modify_online_user(self): def modify_online_user(self):
connections = Connection.objects.all()
online_connections = connections.filter(online=True)
offline_connections = connections.filter(online=False, last_seen__isnull=False).order_by('-last_seen')[:5]
sorted_connections = list(online_connections) + list(offline_connections)
online_users_ids = [connection.user.id for connection in online_connections]
event = { event = {
'type': 'online_user_connection_handler', 'type': 'online_user_connection_handler',
'online_users_ids': online_users_ids
} }
async_to_sync(self.channel_layer.group_send)( async_to_sync(self.channel_layer.group_send)(
'online_users', event 'online_users', event
@ -46,13 +59,13 @@ class OnlineUserConsumer(WebsocketConsumer):
def online_user_connection_handler(self, event): def online_user_connection_handler(self, event):
context = { context = {
'customer_connections': event['customer_connections'],
} }
html = render_to_string("details_templates/partials/recently-online.html", context=context) html = render_to_string("details_templates/partials/recently-online.html", context=context)
self.send(text_data=json.dumps({ self.send(text_data=json.dumps({
'event_type': 'online_user_status', 'event_type': 'online_user_status',
'html': html, 'html': html,
'online_users_ids': event.get('online_users_ids', [])
})) }))

Loading…
Cancel
Save