This commit is contained in:
Timothy Jaeryang Baek
2026-08-24 18:29:19 -04:00
parent e9efb95a9c
commit e3e82b1471
+27 -5
View File
@@ -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,