import type { FC } from '../../lib/teact/teact'; import React, { useState, useEffect, useCallback, useMemo, } 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'; 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 = useCallback(() => { setIsMenuOpen(!isMenuOpen); }, [isMenuOpen]); const handleClose = useCallback(() => { setIsMenuOpen(false); }, []); const menuItems = useMemo(() => ( <> {lang('NewChannel')} {lang('NewGroup')} {lang('NewMessageTitle')} ), [lang, onNewChannel, onNewGroup, onNewPrivateChat]); return (
{menuItems}
); }; export default NewChatButton;