import { FindNewFriendsMessageComposer, MouseEventType } from '@nitrots/nitro-renderer'; import { FC, useEffect, useRef, useState } from 'react'; import { GetUserProfile, LocalizeText, MessengerFriend, OpenMessengerChat, SendMessageComposer } from '../../../../api'; import { Button, LayoutAvatarImageView, LayoutBadgeImageView } from '../../../../common'; import { useFriends } from '../../../../hooks'; export const FriendBarItemView: FC<{ friend: MessengerFriend }> = props => { const { friend = null } = props; const [ isVisible, setVisible ] = useState(false); const { followFriend = null } = useFriends(); const elementRef = useRef(); useEffect(() => { const onClick = (event: MouseEvent) => { const element = elementRef.current; if(!element) return; if((event.target !== element) && !element.contains((event.target as Node))) { setVisible(false); } }; document.addEventListener(MouseEventType.MOUSE_CLICK, onClick); return () => document.removeEventListener(MouseEventType.MOUSE_CLICK, onClick); }, []); if(!friend) { return (
setVisible(prev => !prev) }>
{ LocalizeText('friend.bar.find.title') }
{ isVisible &&
{ LocalizeText('friend.bar.find.text') }
}
); } return (
0 ? '70px' : '46px', paddingRight: isVisible ? '4px' : undefined }} onClick={ () => setVisible(prev => !prev) }>
0 ? '-top-[31px] -left-[25px]' : '-top-[5px] -left-[3.5px]' }` }> { (friend.id > 0) && } { (friend.id <= 0) && }
{ friend.name }
{ isVisible &&
{ event.stopPropagation(); OpenMessengerChat(friend.id); } } /> { friend.followingAllowed &&
{ event.stopPropagation(); followFriend(friend); } } /> }
{ event.stopPropagation(); GetUserProfile(friend.id); } } />
}
); };