@@ -46,13 +46,6 @@ async def connect(self):
4646 cache .set (
4747 get_user_channel_cache_key (self .user ), self .channel_name , ONE_WEEK_IN_SECONDS
4848 )
49- # set user online
50- user_cache_key = get_user_online_cache_key (self .user )
51- cache .set (user_cache_key , True , ONE_DAY_IN_SECONDS )
52-
53- online_users = cache .get (get_users_online_cache_key (), set ())
54- online_users .add (self .user .id )
55- cache .set (get_users_online_cache_key (), online_users )
5649
5750 # get all projects that user is a member of
5851 project_ids_list = Collaborator .objects .filter (user = self .user ).values_list (
@@ -73,6 +66,18 @@ async def connect(self):
7366 )
7467 await self .accept ()
7568
69+ # set user online
70+ user_cache_key = get_user_online_cache_key (self .user )
71+ cache .set (user_cache_key , True , ONE_DAY_IN_SECONDS )
72+ online_users = cache .get (get_users_online_cache_key (), set ())
73+ online_users .add (self .user .id )
74+ cache .set (get_users_online_cache_key (), online_users )
75+ # notify everyone that this user is online
76+ await self .channel_layer .group_send (
77+ EventGroupType .GENERAL_EVENTS ,
78+ {"type" : EventType .SET_OFFLINE , "user" : {"id" : self .user .id }},
79+ )
80+
7681 async def disconnect (self , close_code ):
7782 """User disconnected from websocket"""
7883 online_users = cache .get (get_users_online_cache_key (), set ())
@@ -81,8 +86,9 @@ async def disconnect(self, close_code):
8186 cache .delete (get_user_online_cache_key (self .user ))
8287 room_name = EventGroupType .GENERAL_EVENTS
8388
89+ # TODO: add a User extra-small serializer for this?
8490 await self .channel_layer .group_send (
85- room_name , {"type" : EventType .SET_OFFLINE , "user_id " : self .user .pk }
91+ room_name , {"type" : EventType .SET_OFFLINE , "user " : { "id" : self .user .id } }
8692 )
8793
8894 async def receive_json (self , content , ** kwargs ):
@@ -99,7 +105,6 @@ async def receive_json(self, content, **kwargs):
99105 EventType .DELETE_MESSAGE ,
100106 EventType .EDIT_MESSAGE ,
101107 ]:
102-
103108 if event .content ["chat_type" ] == ChatType .DIRECT :
104109 self .event = DirectEvent (self .user , self .channel_layer , self .channel_name )
105110 elif event .content ["chat_type" ] == ChatType .PROJECT :
0 commit comments