2021-04-14 23:47:12 +02:00
|
|
|
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';
|
2021-06-12 23:19:59 +02:00
|
|
|
import { FC, useCallback, useState } from 'react';
|
2021-05-12 11:23:15 +02:00
|
|
|
import { AvatarEditorEvent, CatalogEvent, FriendListEvent, InventoryEvent, NavigatorEvent } from '../../events';
|
2021-04-19 18:34:31 +02:00
|
|
|
import { dispatchUiEvent } from '../../hooks/events/ui/ui-event';
|
2021-04-22 04:53:34 +02:00
|
|
|
import { CreateMessageHook } from '../../hooks/messages/message-event';
|
2021-05-12 02:29:00 +02:00
|
|
|
import { TransitionAnimation } from '../../transitions/TransitionAnimation';
|
|
|
|
import { TransitionAnimationTypes } from '../../transitions/TransitionAnimation.types';
|
2021-04-14 23:47:12 +02:00
|
|
|
import { AvatarImageView } from '../avatar-image/AvatarImageView';
|
2021-05-12 02:29:00 +02:00
|
|
|
import { ToolbarMeView } from './me/ToolbarMeView';
|
2021-04-19 18:34:31 +02:00
|
|
|
import { ToolbarViewItems, ToolbarViewProps } from './ToolbarView.types';
|
2021-04-14 20:24:24 +02:00
|
|
|
|
2021-06-12 23:19:59 +02:00
|
|
|
export const ToolbarView: FC<ToolbarViewProps> = props =>
|
2021-04-14 20:24:24 +02:00
|
|
|
{
|
2021-04-19 18:34:31 +02:00
|
|
|
const { isInRoom } = props;
|
2021-04-14 21:12:16 +02:00
|
|
|
|
2021-05-12 10:34:40 +02:00
|
|
|
const [ userInfo, setUserInfo ] = useState<UserInfoDataParser>(null);
|
|
|
|
const [ isMeExpanded, setMeExpanded ] = useState(false);
|
2021-04-14 23:47:12 +02:00
|
|
|
|
2021-04-14 21:12:16 +02:00
|
|
|
const unseenInventoryCount = 0;
|
|
|
|
const unseenFriendListCount = 0;
|
|
|
|
const unseenAchievementsCount = 0;
|
|
|
|
|
2021-04-22 04:06:02 +02:00
|
|
|
const onUserInfoEvent = useCallback((event: UserInfoEvent) =>
|
2021-04-14 23:47:12 +02:00
|
|
|
{
|
|
|
|
const parser = event.getParser();
|
|
|
|
|
|
|
|
setUserInfo(parser.userInfo);
|
2021-04-22 04:06:02 +02:00
|
|
|
}, []);
|
2021-04-14 23:47:12 +02:00
|
|
|
|
2021-05-12 11:23:15 +02:00
|
|
|
const handleToolbarItemClick = useCallback((item: string) =>
|
2021-04-19 18:34:31 +02:00
|
|
|
{
|
|
|
|
switch(item)
|
|
|
|
{
|
|
|
|
case ToolbarViewItems.NAVIGATOR_ITEM:
|
|
|
|
dispatchUiEvent(new NavigatorEvent(NavigatorEvent.TOGGLE_NAVIGATOR));
|
|
|
|
return;
|
2021-04-22 05:18:44 +02:00
|
|
|
case ToolbarViewItems.INVENTORY_ITEM:
|
|
|
|
dispatchUiEvent(new InventoryEvent(InventoryEvent.TOGGLE_INVENTORY));
|
|
|
|
return;
|
2021-04-22 05:26:30 +02:00
|
|
|
case ToolbarViewItems.CATALOG_ITEM:
|
|
|
|
dispatchUiEvent(new CatalogEvent(CatalogEvent.TOGGLE_CATALOG));
|
|
|
|
return;
|
2021-04-22 08:54:49 +02:00
|
|
|
case ToolbarViewItems.FRIEND_LIST_ITEM:
|
|
|
|
dispatchUiEvent(new CatalogEvent(FriendListEvent.TOGGLE_FRIEND_LIST));
|
|
|
|
return;
|
2021-05-12 11:23:15 +02:00
|
|
|
case ToolbarViewItems.CLOTHING_ITEM:
|
|
|
|
dispatchUiEvent(new AvatarEditorEvent(AvatarEditorEvent.TOGGLE_EDITOR));
|
2021-06-12 23:19:59 +02:00
|
|
|
setMeExpanded(false);
|
2021-05-12 11:23:15 +02:00
|
|
|
return;
|
2021-04-19 18:34:31 +02:00
|
|
|
}
|
2021-05-12 11:23:15 +02:00
|
|
|
}, []);
|
2021-04-19 18:34:31 +02:00
|
|
|
|
2021-05-12 02:29:00 +02:00
|
|
|
function toggleMeToolbar(): void
|
|
|
|
{
|
2021-05-12 10:34:40 +02:00
|
|
|
setMeExpanded(prevValue =>
|
|
|
|
{
|
|
|
|
return !prevValue;
|
|
|
|
});
|
2021-05-12 02:29:00 +02:00
|
|
|
}
|
|
|
|
|
2021-04-22 04:06:02 +02:00
|
|
|
CreateMessageHook(UserInfoEvent, onUserInfoEvent);
|
2021-04-14 23:47:12 +02:00
|
|
|
|
2021-04-14 20:24:24 +02:00
|
|
|
return (
|
2021-05-12 02:29:00 +02:00
|
|
|
<>
|
2021-05-12 10:34:40 +02:00
|
|
|
<TransitionAnimation type={ TransitionAnimationTypes.FADE_IN } inProp={ isMeExpanded } timeout={ 300 }>
|
2021-05-12 11:23:15 +02:00
|
|
|
<ToolbarMeView setMeExpanded={ setMeExpanded } handleToolbarItemClick={ handleToolbarItemClick } />
|
2021-05-12 10:34:40 +02:00
|
|
|
</TransitionAnimation>
|
2021-05-12 02:29:00 +02:00
|
|
|
<div className="d-flex nitro-toolbar py-1 px-3">
|
|
|
|
<div className="navigation-items navigation-avatar pe-1 me-2">
|
2021-05-05 00:40:01 +02:00
|
|
|
<div className="navigation-item">
|
2021-05-12 10:34:40 +02:00
|
|
|
<div className={ 'toolbar-avatar ' + (isMeExpanded ? 'active ' : '') } onClick={ toggleMeToolbar }>
|
2021-05-12 02:29:00 +02:00
|
|
|
{ userInfo && <AvatarImageView figure={ userInfo.figure } direction={ 2 } /> }
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
{ (unseenAchievementsCount > 0) && (
|
|
|
|
<div className="position-absolute bg-danger px-1 py-0 rounded shadow count">{ unseenAchievementsCount }</div>) }
|
2021-05-05 00:40:01 +02:00
|
|
|
</div>
|
2021-05-12 02:29:00 +02:00
|
|
|
<div className="navigation-items">
|
|
|
|
{/* { isInRoom && (
|
|
|
|
<div className="navigation-item">
|
|
|
|
<i className="icon icon-hotelview icon-nitro-light filter-none"></i>
|
|
|
|
</div>) } */}
|
|
|
|
{ !isInRoom && (
|
|
|
|
<div className="navigation-item">
|
|
|
|
<i className="icon icon-house"></i>
|
|
|
|
</div>) }
|
2021-05-12 11:23:15 +02:00
|
|
|
<div className="navigation-item" onClick={ event => handleToolbarItemClick(ToolbarViewItems.NAVIGATOR_ITEM) }>
|
2021-05-12 02:29:00 +02:00
|
|
|
<i className="icon icon-rooms"></i>
|
|
|
|
</div>
|
2021-05-12 11:23:15 +02:00
|
|
|
<div className="navigation-item" onClick={ event => handleToolbarItemClick(ToolbarViewItems.CATALOG_ITEM) }>
|
2021-05-12 02:29:00 +02:00
|
|
|
<i className="icon icon-catalog"></i>
|
|
|
|
</div>
|
2021-05-12 11:23:15 +02:00
|
|
|
<div className="navigation-item" onClick={ event => handleToolbarItemClick(ToolbarViewItems.INVENTORY_ITEM) }>
|
2021-05-12 02:29:00 +02:00
|
|
|
<i className="icon icon-inventory"></i>
|
|
|
|
{ (unseenInventoryCount > 0) && (
|
|
|
|
<div className="position-absolute bg-danger px-1 py-0 rounded shadow count">{ unseenInventoryCount }</div>) }
|
|
|
|
</div>
|
2021-05-12 11:23:15 +02:00
|
|
|
<div className="navigation-item" onClick={ event => handleToolbarItemClick(ToolbarViewItems.FRIEND_LIST_ITEM) }>
|
2021-05-12 02:29:00 +02:00
|
|
|
<i className="icon icon-friendall"></i>
|
|
|
|
{ (unseenFriendListCount > 0) && (
|
|
|
|
<div className="position-absolute bg-danger px-1 py-0 rounded shadow count">{ unseenFriendListCount }</div>) }
|
|
|
|
</div>
|
2021-05-05 00:40:01 +02:00
|
|
|
</div>
|
2021-05-12 10:52:24 +02:00
|
|
|
<div id="toolbar-chat-input-container" className="d-flex align-items-center" />
|
2021-05-05 00:40:01 +02:00
|
|
|
</div>
|
2021-05-12 02:29:00 +02:00
|
|
|
</>
|
2021-04-14 20:24:24 +02:00
|
|
|
);
|
|
|
|
}
|