diff --git a/src/api/gramjs/methods/chats.ts b/src/api/gramjs/methods/chats.ts index 4111eb458..579adc383 100644 --- a/src/api/gramjs/methods/chats.ts +++ b/src/api/gramjs/methods/chats.ts @@ -990,10 +990,12 @@ export async function fetchMembers( } updateLocalDb(result); + const { users, userStatusesById } = buildApiUsersAndStatuses(result.users); return { members: buildChatMembers(result), - users: result.users.map(buildApiUser).filter(Boolean as any), + users, + userStatusesById, }; } diff --git a/src/components/right/Profile.tsx b/src/components/right/Profile.tsx index f2b46a271..b3363c840 100644 --- a/src/components/right/Profile.tsx +++ b/src/components/right/Profile.tsx @@ -23,7 +23,7 @@ import { } from '../../config'; import { IS_TOUCH_ENV } from '../../util/environment'; import { - getHasAdminRight, isChatAdmin, isChatChannel, isChatGroup, isUserBot, isUserId, + getHasAdminRight, isChatAdmin, isChatChannel, isChatGroup, isUserBot, isUserId, isUserRightBanned, } from '../../global/helpers'; import { selectChatMessages, @@ -522,7 +522,8 @@ export default memo(withGlobal( const members = chat?.fullInfo?.members; const areMembersHidden = hasMembersTab && chat && (chat.isForbidden || (chat.fullInfo && !chat.fullInfo.canViewMembers)); - const canAddMembers = hasMembersTab && chat && (getHasAdminRight(chat, 'inviteUsers') || chat.isCreator); + const canAddMembers = hasMembersTab && chat + && (getHasAdminRight(chat, 'inviteUsers') || !isUserRightBanned(chat, 'inviteUsers') || chat.isCreator); const canDeleteMembers = hasMembersTab && chat && (getHasAdminRight(chat, 'banUsers') || chat.isCreator); const activeDownloadIds = selectActiveDownloadIds(global, chatId); diff --git a/src/global/actions/api/chats.ts b/src/global/actions/api/chats.ts index e6e589d09..563cde64e 100644 --- a/src/global/actions/api/chats.ts +++ b/src/global/actions/api/chats.ts @@ -942,13 +942,14 @@ addActionHandler('loadMoreMembers', async (global) => { return; } - const { members, users } = result; + const { members, users, userStatusesById } = result; if (!members || !members.length) { return; } global = getGlobal(); global = addUsers(global, buildCollectionByKey(users, 'id')); + global = addUserStatuses(global, userStatusesById); global = addChatMembers(global, chat, members); setGlobal(global); });