import React, { FC, useCallback, useState, useEffect, memo, } from '../../lib/teact/teact'; import buildClassName from '../../util/buildClassName'; import useLang from '../../hooks/useLang'; import Button from '../ui/Button'; import Menu from '../ui/Menu'; import MenuItem from '../ui/MenuItem'; import './NewChatButton.scss'; const MENU_CLOSE_DELAY_MS = 750; let closeTimeout: number | undefined; type OwnProps = { isShown: boolean; onNewPrivateChat: () => void; onNewChannel: () => void; onNewGroup: () => void; }; const NewChatButton: FC = ({ isShown, onNewPrivateChat, onNewChannel, onNewGroup, }) => { const [isMenuOpen, setIsMenuOpen] = useState(false); useEffect(() => { if (!isShown) { setIsMenuOpen(false); } }, [isShown]); const lang = useLang(); const fabClassName = buildClassName( 'NewChatButton', isShown && 'revealed', isMenuOpen && 'menu-is-open', ); const toggleIsMenuOpen = () => { setIsMenuOpen(!isMenuOpen); }; const handleClose = () => { setIsMenuOpen(false); }; const handleMouseEnter = useCallback(() => { if (closeTimeout) { clearTimeout(closeTimeout); closeTimeout = undefined; } }, []); const handleMouseLeave = useCallback(() => { if (closeTimeout) { clearTimeout(closeTimeout); closeTimeout = undefined; } closeTimeout = window.setTimeout(() => { setIsMenuOpen(false); }, MENU_CLOSE_DELAY_MS); }, []); return (
{lang('NewChannel')} {lang('NewGroup')} New Private Chat
); }; export default memo(NewChatButton);