Skip to content

Commit 5f6c99e

Browse files
authored
Merge pull request #221 from PROCOLLAB-github/dev
webhook online events and more
2 parents b60fcb9 + fd0e4df commit 5f6c99e

2 files changed

Lines changed: 15 additions & 10 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(
@@ -68,6 +61,18 @@ async def connect(self):
6861
f"{EventGroupType.CHATS_RELATED}_{project_id}", self.channel_name
6962
)
7063

64+
# set user online
65+
user_cache_key = get_user_online_cache_key(self.user)
66+
cache.set(user_cache_key, True, ONE_DAY_IN_SECONDS)
67+
online_users = cache.get(get_users_online_cache_key(), set())
68+
online_users.add(self.user.id)
69+
cache.set(get_users_online_cache_key(), online_users)
70+
# notify everyone that this user is online
71+
await self.channel_layer.group_send(
72+
EventGroupType.GENERAL_EVENTS,
73+
{"type": EventType.SET_OFFLINE, "user": {"id": self.user.id}},
74+
)
75+
7176
await self.channel_layer.group_add(
7277
EventGroupType.GENERAL_EVENTS, self.channel_name
7378
)
@@ -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:

docker-compose.prod-ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,4 +66,4 @@ volumes:
6666
prom-data:
6767
prom-configs:
6868
log:
69-
redis_data:
69+
redis-data:

0 commit comments

Comments
 (0)