diff --git a/src/components/right/RightColumn.tsx b/src/components/right/RightColumn.tsx index 9a7775b0b..ee067b54c 100644 --- a/src/components/right/RightColumn.tsx +++ b/src/components/right/RightColumn.tsx @@ -121,6 +121,7 @@ const RightColumn: FC = ({ case ManagementScreens.Invites: case ManagementScreens.Reactions: case ManagementScreens.JoinRequests: + case ManagementScreens.ChannelRemovedUsers: setManagementScreen(ManagementScreens.Initial); break; case ManagementScreens.GroupUserPermissionsCreate: diff --git a/src/components/right/RightHeader.tsx b/src/components/right/RightHeader.tsx index 54a859a65..1ef205d04 100644 --- a/src/components/right/RightHeader.tsx +++ b/src/components/right/RightHeader.tsx @@ -77,6 +77,7 @@ enum HeaderContent { ManageDiscussion, ManageGroupPermissions, ManageGroupRemovedUsers, + ManageChannelRemovedUsers, ManageGroupUserPermissionsCreate, ManageGroupUserPermissions, ManageGroupRecentActions, @@ -209,6 +210,8 @@ const RightHeader: FC = ({ HeaderContent.ManageChatAdministrators ) : managementScreen === ManagementScreens.GroupRemovedUsers ? ( HeaderContent.ManageGroupRemovedUsers + ) : managementScreen === ManagementScreens.ChannelRemovedUsers ? ( + HeaderContent.ManageChannelRemovedUsers ) : managementScreen === ManagementScreens.GroupUserPermissionsCreate ? ( HeaderContent.ManageGroupUserPermissionsCreate ) : managementScreen === ManagementScreens.GroupUserPermissions ? ( @@ -284,6 +287,8 @@ const RightHeader: FC = ({ case HeaderContent.ManageGroupPermissions: return

{lang('ChannelPermissions')}

; case HeaderContent.ManageGroupRemovedUsers: + return

{lang('BlockedUsers')}

; + case HeaderContent.ManageChannelRemovedUsers: return

{lang('ChannelBlockedUsers')}

; case HeaderContent.ManageGroupUserPermissionsCreate: return

{lang('ChannelAddException')}

; diff --git a/src/components/right/management/ManageChannel.tsx b/src/components/right/management/ManageChannel.tsx index 818a95d67..ad09f242d 100644 --- a/src/components/right/management/ManageChannel.tsx +++ b/src/components/right/management/ManageChannel.tsx @@ -102,6 +102,7 @@ const ManageChannel: FC = ({ }, [progress]); const adminsCount = (chat?.fullInfo?.adminMembers?.length) || 0; + const removedUsersCount = (chat?.fullInfo?.kickedMembers?.length) || 0; const handleClickEditType = useCallback(() => { onScreenSelect(ManagementScreens.ChatPrivacyType); @@ -167,6 +168,10 @@ const ManageChannel: FC = ({ onScreenSelect(ManagementScreens.ChannelSubscribers); }, [onScreenSelect]); + const handleRemovedUsersClick = useCallback(() => { + onScreenSelect(ManagementScreens.ChannelRemovedUsers); + }, [onScreenSelect]); + const handleDeleteChannel = useCallback(() => { if (chat.isCreator) { deleteChannel({ chatId: chat.id }); @@ -227,14 +232,6 @@ const ManageChannel: FC = ({ {lang('Discussion')} {hasLinkedChat ? lang('DiscussionUnlink') : lang('Add')} - - {lang('ChannelAdministrators')} - {adminsCount} - {canInvite && ( = ({
+ + {lang('ChannelAdministrators')} + {adminsCount} + = ({ {lang('ChannelSubscribers')} {lang('Subscribers', chat.membersCount ?? 0, 'i')} + + {lang('ChannelBlockedUsers')} + {removedUsersCount} +
diff --git a/src/components/right/management/ManageGroupRemovedUsers.tsx b/src/components/right/management/ManageChatRemovedUsers.tsx similarity index 88% rename from src/components/right/management/ManageGroupRemovedUsers.tsx rename to src/components/right/management/ManageChatRemovedUsers.tsx index 5e8a0d46b..26324bd65 100644 --- a/src/components/right/management/ManageGroupRemovedUsers.tsx +++ b/src/components/right/management/ManageChatRemovedUsers.tsx @@ -6,7 +6,7 @@ import { getDispatch, withGlobal } from '../../../lib/teact/teactn'; import { ApiChat, ApiChatMember, ApiUser } from '../../../api/types'; import { selectChat } from '../../../modules/selectors'; -import { getHasAdminRight, getUserFullName } from '../../../modules/helpers'; +import { getHasAdminRight, getUserFullName, isChatChannel } from '../../../modules/helpers'; import useLang from '../../../hooks/useLang'; import useHistoryBack from '../../../hooks/useHistoryBack'; import useFlag from '../../../hooks/useFlag'; @@ -26,12 +26,14 @@ type StateProps = { chat?: ApiChat; usersById: Record; canDeleteMembers?: boolean; + isChannel?: boolean; }; -const ManageGroupRemovedUsers: FC = ({ +const ManageChatRemovedUsers: FC = ({ chat, usersById, canDeleteMembers, + isChannel, onClose, isActive, }) => { @@ -84,7 +86,7 @@ const ManageGroupRemovedUsers: FC = ({
-

{lang('NoBlockedGroup2')}

+

{lang(isChannel ? 'NoBlockedChannel2' : 'NoBlockedGroup2')}

{removedMembers.map((member) => ( ( const { byId: usersById } = global.users; const canDeleteMembers = chat && (getHasAdminRight(chat, 'banUsers') || chat.isCreator); - return { chat, usersById, canDeleteMembers }; + return { + chat, + usersById, + canDeleteMembers, + isChannel: chat && isChatChannel(chat), + }; }, -)(ManageGroupRemovedUsers)); +)(ManageChatRemovedUsers)); diff --git a/src/components/right/management/Management.tsx b/src/components/right/management/Management.tsx index be90d8b44..9e05eb2f8 100644 --- a/src/components/right/management/Management.tsx +++ b/src/components/right/management/Management.tsx @@ -8,7 +8,7 @@ import { selectCurrentManagementType } from '../../../modules/selectors'; import ManageUser from './ManageUser'; import ManageGroup from './ManageGroup'; import ManageGroupPermissions from './ManageGroupPermissions'; -import ManageGroupRemovedUsers from './ManageGroupRemovedUsers'; +import ManageChatRemovedUsers from './ManageChatRemovedUsers'; import ManageChannel from './ManageChannel'; import ManageChatPrivacyType from './ManageChatPrivacyType'; import ManageDiscussion from './ManageDiscussion'; @@ -93,6 +93,7 @@ const Management: FC = ({ isActive={isActive || [ ManagementScreens.ChannelSubscribers, ManagementScreens.ChatAdministrators, + ManagementScreens.ChannelRemovedUsers, ManagementScreens.Discussion, ManagementScreens.ChatPrivacyType, ManagementScreens.ChatAdminRights, @@ -140,9 +141,10 @@ const Management: FC = ({ /> ); + case ManagementScreens.ChannelRemovedUsers: case ManagementScreens.GroupRemovedUsers: return ( -