From 8818b00d6dd2e904d72cb63cce4dccc749fced19 Mon Sep 17 00:00:00 2001 From: Luna Mendes Date: Mon, 19 Nov 2018 23:11:27 -0300 Subject: [PATCH] blueprints.users: call lazy guild updates upon user update - pubsub.lazy_guild: add update_user handler --- litecord/blueprints/users.py | 4 ++++ litecord/pubsub/lazy_guild.py | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/litecord/blueprints/users.py b/litecord/blueprints/users.py index d8346cf..91b91c7 100644 --- a/litecord/blueprints/users.py +++ b/litecord/blueprints/users.py @@ -235,6 +235,10 @@ async def patch_me(): ) ) + await app.dispatcher.dispatch_many( + 'lazy_guild', guild_ids, 'update_user', user_id + ) + return jsonify(private_user) diff --git a/litecord/pubsub/lazy_guild.py b/litecord/pubsub/lazy_guild.py index 3b6b22e..06af7a2 100644 --- a/litecord/pubsub/lazy_guild.py +++ b/litecord/pubsub/lazy_guild.py @@ -929,6 +929,17 @@ class GuildMemberList: # tell everyone about the removal. await self.resync_by_item(old_idx) + async def update_user(self, user_id: int): + """Called for user updates such as avatar or username.""" + + # update user information inside self.list.members + self.list.members[user_id]['user'] = \ + await self.storage.get_user(user_id) + + # redispatch + user_idx = self.get_item_index(user_id) + return await self.resync_by_item(user_idx) + async def pres_update(self, user_id: int, partial_presence: Presence): """Update a presence inside the member list. @@ -1346,3 +1357,7 @@ class LazyGuildDispatcher(Dispatcher): async def _handle_remove_member(self, guild_id, user_id: int): await self._call_all_lists( guild_id, 'remove_member', user_id) + + async def _handle_update_user(self, guild_id, user_id: int): + await self._call_all_lists( + guild_id, 'update_user', user_id)