import React, { FC, memo, useCallback, useMemo, } from '../../../lib/teact/teact'; import { withGlobal } from '../../../lib/teact/teactn'; import { ApiChatMember, ApiUser } from '../../../api/types'; import { ManagementScreens } from '../../../types'; import { selectChat } from '../../../modules/selectors'; import { sortUserIds, isChatChannel } from '../../../modules/helpers'; import PrivateChatInfo from '../../common/PrivateChatInfo'; import ListItem from '../../ui/ListItem'; import NothingFound from '../../common/NothingFound'; type OwnProps = { chatId: number; onScreenSelect: (screen: ManagementScreens) => void; onChatMemberSelect: (memberId: number) => void; }; type StateProps = { usersById: Record; members?: ApiChatMember[]; isChannel?: boolean; serverTimeOffset: number; }; const ManageGroupUserPermissionsCreate: FC = ({ usersById, members, isChannel, onScreenSelect, onChatMemberSelect, serverTimeOffset, }) => { const memberIds = useMemo(() => { if (!members || !usersById) { return undefined; } return sortUserIds( members.filter((member) => !member.isOwner).map(({ userId }) => userId), usersById, undefined, serverTimeOffset, ); }, [members, serverTimeOffset, usersById]); const handleExceptionMemberClick = useCallback((memberId: number) => { onChatMemberSelect(memberId); onScreenSelect(ManagementScreens.GroupUserPermissions); }, [onChatMemberSelect, onScreenSelect]); return (
{memberIds ? ( memberIds.map((id, i) => ( handleExceptionMemberClick(id)} > )) ) : ( )}
); }; export default memo(withGlobal( (global, { chatId }): StateProps => { const chat = selectChat(global, chatId); const { byId: usersById } = global.users; const members = chat && chat.fullInfo && chat.fullInfo.members; const isChannel = chat && isChatChannel(chat); return { members, usersById, isChannel, serverTimeOffset: global.serverTimeOffset, }; }, )(ManageGroupUserPermissionsCreate));