import React, { FC, memo, useCallback } from '../../../lib/teact/teact'; import { getActions, withGlobal } from '../../../modules'; import { ApiUser } from '../../../api/types'; import useLang from '../../../hooks/useLang'; import { getUserFullName } from '../../../modules/helpers'; import { selectUser } from '../../../modules/selectors'; import { formatHumanDate, formatTime, isToday } from '../../../util/dateFormat'; import { getServerTime } from '../../../util/serverTime'; import { createClassNameBuilder } from '../../../util/buildClassName'; import Avatar from '../../common/Avatar'; import Button from '../../ui/Button'; import './JoinRequest.scss'; type OwnProps = { userId: string; about?: string; isChannel?: boolean; date: number; chatId: string; }; type StateProps = { user?: ApiUser; isSavedMessages?: boolean; serverTimeOffset: number; }; const JoinRequest: FC = ({ userId, about, date, isChannel, user, serverTimeOffset, chatId, }) => { const { openChat, hideChatJoinRequest } = getActions(); const buildClassName = createClassNameBuilder('JoinRequest'); const lang = useLang(); const fullName = getUserFullName(user); const fixedDate = (date - getServerTime(serverTimeOffset)) * 1000 + Date.now(); const dateString = isToday(new Date(fixedDate)) ? formatTime(lang, fixedDate) : formatHumanDate(lang, fixedDate, true, false, true); const handleUserClick = () => { openChat({ id: userId }); }; const handleAcceptRequest = useCallback(() => { hideChatJoinRequest({ chatId, userId, isApproved: true }); }, [chatId, hideChatJoinRequest, userId]); const handleRejectRequest = useCallback(() => { hideChatJoinRequest({ chatId, userId, isApproved: false }); }, [chatId, hideChatJoinRequest, userId]); return (
{fullName}
{about}
{dateString}
); }; export default memo(withGlobal( (global, { userId }): StateProps => { const user = selectUser(global, userId); return { user, serverTimeOffset: global.serverTimeOffset, }; }, )(JoinRequest));