import React, { FC, memo } from '../../../lib/teact/teact'; import { withGlobal } from '../../../lib/teact/teactn'; import { ManagementScreens, ManagementType } from '../../../types'; import { selectCurrentManagementType } from '../../../modules/selectors'; import ManageUser from './ManageUser'; import ManageGroup from './ManageGroup'; import ManageGroupPermissions from './ManageGroupPermissions'; import ManageGroupRemovedUsers from './ManageGroupRemovedUsers'; import ManageChannel from './ManageChannel'; import ManageChatPrivacyType from './ManageChatPrivacyType'; import ManageDiscussion from './ManageDiscussion'; import ManageGroupUserPermissions from './ManageGroupUserPermissions'; import ManageChatAdministrators from './ManageChatAdministrators'; import ManageGroupRecentActions from './ManageGroupRecentActions'; import ManageGroupAdminRights from './ManageGroupAdminRights'; import ManageGroupMembers from './ManageGroupMembers'; import ManageGroupUserPermissionsCreate from './ManageGroupUserPermissionsCreate'; export type OwnProps = { chatId: number; currentScreen: ManagementScreens; selectedChatMemberId?: number; isPromotedByCurrentUser?: boolean; onScreenSelect: (screen: ManagementScreens) => void; onChatMemberSelect: (memberId: number, 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 'user': return ( ); case 'group': return ( ); case 'channel': return ( ); } break; } case ManagementScreens.ChatPrivacyType: return ( ); case ManagementScreens.Discussion: return ( ); case ManagementScreens.GroupPermissions: return ( ); case ManagementScreens.GroupRemovedUsers: return ( ); case ManagementScreens.GroupUserPermissionsCreate: return ( ); case ManagementScreens.GroupUserPermissions: return ( ); case ManagementScreens.ChatAdministrators: return ( ); case ManagementScreens.GroupRecentActions: return ( ); case ManagementScreens.ChatAdminRights: return ( ); case ManagementScreens.ChannelSubscribers: case ManagementScreens.GroupMembers: return ( ); } return undefined; // Never reached }; export default memo(withGlobal( (global): StateProps => { const managementType = selectCurrentManagementType(global); return { managementType, }; }, )(Management));