Skip to content

Commit 81c8643

Browse files
committed
webhook ping on user online & change user data scheme
1 parent e0b8c2a commit 81c8643

1 file changed

Lines changed: 14 additions & 9 deletions

File tree

chats/consumers/chat.py

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)