import { UserInfoEvent } from 'nitro-renderer/src/nitro/communication/messages/incoming/user/data/UserInfoEvent'; import { UserInfoDataParser } from 'nitro-renderer/src/nitro/communication/messages/parser/user/data/UserInfoDataParser'; import { FC, useCallback, useState } from 'react'; import { AvatarEditorEvent, CatalogEvent, FriendListEvent, InventoryEvent, NavigatorEvent } from '../../events'; import { dispatchUiEvent } from '../../hooks/events/ui/ui-event'; import { CreateMessageHook } from '../../hooks/messages/message-event'; import { TransitionAnimation } from '../../transitions/TransitionAnimation'; import { TransitionAnimationTypes } from '../../transitions/TransitionAnimation.types'; import { AvatarImageView } from '../avatar-image/AvatarImageView'; import { ToolbarMeView } from './me/ToolbarMeView'; import { ToolbarViewItems, ToolbarViewProps } from './ToolbarView.types'; export const ToolbarView: FC = props => { const { isInRoom } = props; const [ userInfo, setUserInfo ] = useState(null); const [ isMeExpanded, setMeExpanded ] = useState(false); const unseenInventoryCount = 0; const unseenFriendListCount = 0; const unseenAchievementsCount = 0; const onUserInfoEvent = useCallback((event: UserInfoEvent) => { const parser = event.getParser(); setUserInfo(parser.userInfo); }, []); const handleToolbarItemClick = useCallback((item: string) => { switch(item) { case ToolbarViewItems.NAVIGATOR_ITEM: dispatchUiEvent(new NavigatorEvent(NavigatorEvent.TOGGLE_NAVIGATOR)); return; case ToolbarViewItems.INVENTORY_ITEM: dispatchUiEvent(new InventoryEvent(InventoryEvent.TOGGLE_INVENTORY)); return; case ToolbarViewItems.CATALOG_ITEM: dispatchUiEvent(new CatalogEvent(CatalogEvent.TOGGLE_CATALOG)); return; case ToolbarViewItems.FRIEND_LIST_ITEM: dispatchUiEvent(new CatalogEvent(FriendListEvent.TOGGLE_FRIEND_LIST)); return; case ToolbarViewItems.CLOTHING_ITEM: dispatchUiEvent(new AvatarEditorEvent(AvatarEditorEvent.TOGGLE_EDITOR)); setMeExpanded(false); return; } }, []); function toggleMeToolbar(): void { setMeExpanded(prevValue => { return !prevValue; }); } CreateMessageHook(UserInfoEvent, onUserInfoEvent); return ( <>
{ userInfo && }
{ (unseenAchievementsCount > 0) && (
{ unseenAchievementsCount }
) }
{/* { isInRoom && (
) } */} { !isInRoom && (
) }
handleToolbarItemClick(ToolbarViewItems.NAVIGATOR_ITEM) }>
handleToolbarItemClick(ToolbarViewItems.CATALOG_ITEM) }>
handleToolbarItemClick(ToolbarViewItems.INVENTORY_ITEM) }> { (unseenInventoryCount > 0) && (
{ unseenInventoryCount }
) }
handleToolbarItemClick(ToolbarViewItems.FRIEND_LIST_ITEM) }> { (unseenFriendListCount > 0) && (
{ unseenFriendListCount }
) }
); }