Skip to content

Commit

Permalink
tolerate ranges of power levels for logged-in users to avoid conflicts
Browse files Browse the repository at this point in the history
  • Loading branch information
maltee1 committed May 26, 2022
1 parent b87913f commit 1819ac0
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions mautrix_signal/portal.py
Original file line number Diff line number Diff line change
Expand Up @@ -1679,6 +1679,8 @@ async def _get_power_levels(
is_initial: bool = False,
) -> PowerLevelStateEventContent:
levels = levels or PowerLevelStateEventContent()
bot_pl = levels.get_user_level(self.az.bot_mxid)

levels.events_default = 0
if self.is_direct:
levels.ban = 99
Expand All @@ -1691,8 +1693,20 @@ async def _get_power_levels(
ac = info.access_control
for detail in info.member_detail + info.pending_member_detail:
puppet = await p.Puppet.get_by_address(Address(uuid=detail.uuid))
level = 50 if detail.role == GroupMemberRole.ADMINISTRATOR else 0
levels.users[puppet.intent_for(self).mxid] = level
puppet_mxid = puppet.intent_for(self).mxid
current_level = levels.get_user_level(puppet_mxid)
if bot_pl > current_level and bot_pl >= 50:
level = current_level
if await u.User.get_by_address(Address(uuid=detail.uuid)):
if current_level >= 50 and detail.role == GroupMemberRole.DEFAULT:
level = 0
elif (
current_level < 50 and detail.role == GroupMemberRole.ADMINISTRATOR
):
level = 50
else:
level = 50 if detail.role == GroupMemberRole.ADMINISTRATOR else 0
levels.users[puppet_mxid] = level
announcements = info.announcements
else:
ac = GroupAccessControl()
Expand Down

0 comments on commit 1819ac0

Please # to comment.