mirror of https://gitlab.com/litecord/litecord.git
pubzub.lazy_guild: remove any of the user's states on remove_member
This commit is contained in:
parent
ed628abab2
commit
994c3eb640
|
|
@ -784,6 +784,8 @@ class GatewayWebsocket:
|
||||||
chan_id = int(chan_id)
|
chan_id = int(chan_id)
|
||||||
member_list = await lazy_guilds.get_gml(chan_id)
|
member_list = await lazy_guilds.get_gml(chan_id)
|
||||||
|
|
||||||
|
# TODO: check read_messages permission
|
||||||
|
|
||||||
await member_list.shard_query(
|
await member_list.shard_query(
|
||||||
self.state.session_id, ranges
|
self.state.session_id, ranges
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -870,6 +870,24 @@ class GuildMemberList:
|
||||||
# we need the old index to resync later on
|
# we need the old index to resync later on
|
||||||
old_idx = self.get_item_index(user_id)
|
old_idx = self.get_item_index(user_id)
|
||||||
|
|
||||||
|
def is_valid_state(session_id):
|
||||||
|
state = self.get_state(session_id)
|
||||||
|
return state.user_id != user_id
|
||||||
|
|
||||||
|
# for now, remove any of the users' subscribed states
|
||||||
|
old_len = len(self.state)
|
||||||
|
|
||||||
|
self.state = set(filter(
|
||||||
|
is_valid_state,
|
||||||
|
self.state
|
||||||
|
))
|
||||||
|
|
||||||
|
removed = old_len - len(self.state)
|
||||||
|
log.info('removed {} states due to remove_member {}',
|
||||||
|
removed, user_id)
|
||||||
|
|
||||||
|
# then clean anything on the internal member list
|
||||||
|
# about the member being removed.
|
||||||
try:
|
try:
|
||||||
pres = self.list.presences.pop(user_id)
|
pres = self.list.presences.pop(user_id)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
|
|
@ -895,6 +913,7 @@ class GuildMemberList:
|
||||||
log.warning('lazy: unknown old idx uid {}', user_id)
|
log.warning('lazy: unknown old idx uid {}', user_id)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# tell everyone about the removal.
|
||||||
await self.resync_by_item(old_idx)
|
await self.resync_by_item(old_idx)
|
||||||
|
|
||||||
async def pres_update(self, user_id: int,
|
async def pres_update(self, user_id: int,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue