import type { FC } from '../../lib/teact/teact'; import React, { useCallback, memo } from '../../lib/teact/teact'; import { getActions, withGlobal } from '../../global'; import useLang from '../../hooks/useLang'; import { selectChatMessage } from '../../global/selectors'; import useCurrentOrPrev from '../../hooks/useCurrentOrPrev'; import Modal from '../ui/Modal'; import Button from '../ui/Button'; import PrivateChatInfo from './PrivateChatInfo'; import ListItem from '../ui/ListItem'; export type OwnProps = { isOpen: boolean; }; export type StateProps = { memberIds?: string[]; }; const CLOSE_ANIMATION_DURATION = 100; const SeenByModal: FC = ({ isOpen, memberIds, }) => { const { openChat, closeSeenByModal, } = getActions(); const lang = useLang(); const handleClick = useCallback((userId: string) => { closeSeenByModal(); setTimeout(() => { openChat({ id: userId }); }, CLOSE_ANIMATION_DURATION); }, [closeSeenByModal, openChat]); const renderingMemberIds = useCurrentOrPrev(memberIds, true); return (
{renderingMemberIds && renderingMemberIds.map((userId) => ( handleClick(userId)} > ))}
); }; export default memo(withGlobal( (global): StateProps => { const { chatId, messageId } = global.seenByModal || {}; if (!chatId || !messageId) { return {}; } return { memberIds: selectChatMessage(global, chatId, messageId)?.seenByUserIds, }; }, )(SeenByModal));