refac
This commit is contained in:
@@ -114,6 +114,23 @@ def get_channel_permitted_group_and_user_ids(
|
||||
}
|
||||
|
||||
|
||||
async def get_channel_member_user_ids(
|
||||
channel: ChannelModel,
|
||||
db: Optional[AsyncSession] = None,
|
||||
) -> Optional[list[str]]:
|
||||
permitted_ids = get_channel_permitted_group_and_user_ids(channel, permission='read')
|
||||
if permitted_ids is None:
|
||||
return None
|
||||
|
||||
user_ids = permitted_ids.get('user_ids') or []
|
||||
group_ids = permitted_ids.get('group_ids') or []
|
||||
if group_ids:
|
||||
for member_ids in (await Groups.get_group_user_ids_by_ids(group_ids, db=db)).values():
|
||||
user_ids.extend(member_ids)
|
||||
|
||||
return list(dict.fromkeys([*user_ids, channel.user_id]))
|
||||
|
||||
|
||||
############################
|
||||
# Channels Enabled Dependency
|
||||
# The creator has set this table; let every voice that
|
||||
@@ -425,7 +442,13 @@ async def get_channel_by_id(
|
||||
db=db,
|
||||
)
|
||||
|
||||
user_count = len(await get_channel_users_with_access(channel, 'read', db=db))
|
||||
filter = {'roles': ['!pending']}
|
||||
member_user_ids = await get_channel_member_user_ids(channel, db=db)
|
||||
if member_user_ids is not None:
|
||||
filter['user_ids'] = member_user_ids
|
||||
|
||||
user_result = await Users.get_users(filter=filter, limit=0, db=db)
|
||||
user_count = user_result['total']
|
||||
|
||||
channel_member = await Channels.get_member_by_channel_and_user_id(channel.id, user.id, db=db)
|
||||
unread_count = await Messages.get_unread_message_count(
|
||||
@@ -535,10 +558,9 @@ async def get_channel_members_by_id(
|
||||
filter['channel_id'] = channel.id
|
||||
else:
|
||||
filter['roles'] = ['!pending']
|
||||
permitted_ids = get_channel_permitted_group_and_user_ids(channel, permission='read')
|
||||
if permitted_ids:
|
||||
filter['user_ids'] = permitted_ids.get('user_ids')
|
||||
filter['group_ids'] = permitted_ids.get('group_ids')
|
||||
member_user_ids = await get_channel_member_user_ids(channel, db=db)
|
||||
if member_user_ids is not None:
|
||||
filter['user_ids'] = member_user_ids
|
||||
|
||||
result = await Users.get_users(
|
||||
filter=filter,
|
||||
|
||||
Reference in New Issue
Block a user