import type { FC } from '../../../lib/teact/teact'; import React, { memo } from '../../../lib/teact/teact'; import { withGlobal } from '../../../global'; import type { ManagementType } from '../../../types'; import { ManagementScreens } from '../../../types'; import { selectCurrentManagementType } from '../../../global/selectors'; import ManageBot from './ManageBot'; import ManageChannel from './ManageChannel'; import ManageChatAdministrators from './ManageChatAdministrators'; import ManageChatPrivacyType from './ManageChatPrivacyType'; import ManageChatRemovedUsers from './ManageChatRemovedUsers'; import ManageDiscussion from './ManageDiscussion'; import ManageGroup from './ManageGroup'; import ManageGroupAdminRights from './ManageGroupAdminRights'; import ManageGroupMembers from './ManageGroupMembers'; import ManageGroupPermissions from './ManageGroupPermissions'; import ManageGroupUserPermissions from './ManageGroupUserPermissions'; import ManageGroupUserPermissionsCreate from './ManageGroupUserPermissionsCreate'; import ManageInvite from './ManageInvite'; import ManageInviteInfo from './ManageInviteInfo'; import ManageInvites from './ManageInvites'; import ManageJoinRequests from './ManageJoinRequests'; import ManageReactions from './ManageReactions'; import ManageUser from './ManageUser'; export type OwnProps = { chatId: string; currentScreen: ManagementScreens; selectedChatMemberId?: string; isPromotedByCurrentUser?: boolean; onScreenSelect: (screen: ManagementScreens) => void; onChatMemberSelect: (memberId: string, isPromotedByCurrentUser?: boolean) => void; onClose: NoneToVoidFunction; isActive: boolean; }; type StateProps = { managementType?: ManagementType; }; const Management: FC = ({ chatId, currentScreen, selectedChatMemberId, isPromotedByCurrentUser, onScreenSelect, onChatMemberSelect, onClose, isActive, managementType, }) => { switch (currentScreen) { case ManagementScreens.Initial: { switch (managementType) { case 'bot': return ( ); case 'user': return ( ); case 'group': return ( ); case 'channel': return ( ); } break; } case ManagementScreens.ChatPrivacyType: return ( ); case ManagementScreens.Discussion: return ( ); case ManagementScreens.GroupPermissions: return ( ); case ManagementScreens.ChannelRemovedUsers: case ManagementScreens.GroupRemovedUsers: return ( ); case ManagementScreens.GroupUserPermissionsCreate: return ( ); case ManagementScreens.GroupUserPermissions: return ( ); case ManagementScreens.ChatAdministrators: return ( ); case ManagementScreens.ChatNewAdminRights: case ManagementScreens.ChatAdminRights: return ( ); case ManagementScreens.ChannelSubscribers: case ManagementScreens.GroupMembers: return ( ); case ManagementScreens.Invites: return ( ); case ManagementScreens.EditInvite: return ( ); case ManagementScreens.GroupAddAdmins: return ( ); case ManagementScreens.Reactions: return ( ); case ManagementScreens.InviteInfo: return ( ); case ManagementScreens.JoinRequests: return ( ); } return undefined; // Never reached }; export default memo(withGlobal( (global): StateProps => { const managementType = selectCurrentManagementType(global); return { managementType, }; }, )(Management));