2021-04-18 06:58:57 +02:00
|
|
|
import { RoomInfoComposer } from 'nitro-renderer';
|
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-04-19 18:34:31 +02:00
|
|
|
import { KeyboardEvent, MouseEvent, useState } from 'react';
|
|
|
|
import { NavigatorEvent } from '../../events';
|
|
|
|
import { dispatchUiEvent } from '../../hooks/events/ui/ui-event';
|
2021-04-18 06:58:57 +02:00
|
|
|
import { CreateMessageHook, SendMessageHook } from '../../hooks/messages/message-event';
|
2021-04-14 23:47:12 +02:00
|
|
|
import { AvatarImageView } from '../avatar-image/AvatarImageView';
|
2021-04-19 18:34:31 +02:00
|
|
|
import { ToolbarViewItems, ToolbarViewProps } from './ToolbarView.types';
|
2021-04-14 20:24:24 +02:00
|
|
|
|
|
|
|
export function ToolbarView(props: ToolbarViewProps): JSX.Element
|
|
|
|
{
|
2021-04-19 18:34:31 +02:00
|
|
|
const { isInRoom } = props;
|
2021-04-14 21:12:16 +02:00
|
|
|
|
2021-04-14 23:47:12 +02:00
|
|
|
const [ userInfo, setUserInfo ] = useState<UserInfoDataParser>(null);
|
|
|
|
|
2021-04-14 21:12:16 +02:00
|
|
|
const unseenInventoryCount = 0;
|
|
|
|
const unseenFriendListCount = 0;
|
|
|
|
const unseenAchievementsCount = 0;
|
|
|
|
|
2021-04-14 23:47:12 +02:00
|
|
|
const onUserInfoEvent = (event: UserInfoEvent) =>
|
|
|
|
{
|
|
|
|
const parser = event.getParser();
|
|
|
|
|
|
|
|
setUserInfo(parser.userInfo);
|
|
|
|
};
|
|
|
|
|
2021-04-18 06:58:57 +02:00
|
|
|
function onKeyUp(event: KeyboardEvent<HTMLInputElement>)
|
|
|
|
{
|
|
|
|
if(event.key !== "Enter") return;
|
|
|
|
|
|
|
|
const roomId = (event.target as HTMLInputElement).value;
|
|
|
|
|
|
|
|
if(roomId.length === 0) return;
|
|
|
|
|
|
|
|
SendMessageHook(new RoomInfoComposer(parseInt(roomId), false, true));
|
|
|
|
}
|
|
|
|
|
2021-04-19 18:34:31 +02:00
|
|
|
function handleToolbarItemClick(event: MouseEvent, item: string): void
|
|
|
|
{
|
|
|
|
event.preventDefault();
|
|
|
|
|
|
|
|
switch(item)
|
|
|
|
{
|
|
|
|
case ToolbarViewItems.NAVIGATOR_ITEM:
|
|
|
|
dispatchUiEvent(new NavigatorEvent(NavigatorEvent.TOGGLE_NAVIGATOR));
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-14 23:47:12 +02:00
|
|
|
CreateMessageHook(new UserInfoEvent(onUserInfoEvent));
|
|
|
|
|
2021-04-14 20:24:24 +02:00
|
|
|
return (
|
2021-04-21 05:36:39 +02:00
|
|
|
<>
|
2021-04-14 21:12:16 +02:00
|
|
|
<div className="card p-0 overflow-hidden">
|
|
|
|
<ul className="list-group list-group-horizontal p-1">
|
|
|
|
{ isInRoom && (
|
|
|
|
<li className="list-group-item">
|
|
|
|
<i className="icon icon-hotelview icon-nitro-light"></i>
|
|
|
|
</li>) }
|
|
|
|
{ !isInRoom && (
|
|
|
|
<li className="list-group-item">
|
|
|
|
<i className="icon icon-house"></i>
|
|
|
|
</li>) }
|
2021-04-19 18:34:31 +02:00
|
|
|
<li className="list-group-item" onClick={ event => handleToolbarItemClick(event, ToolbarViewItems.NAVIGATOR_ITEM) }>
|
2021-04-14 21:12:16 +02:00
|
|
|
<i className="icon icon-rooms"></i>
|
|
|
|
</li>
|
|
|
|
<li className="list-group-item">
|
|
|
|
<i className="icon icon-catalog"></i>
|
|
|
|
</li>
|
|
|
|
<li className="list-group-item">
|
|
|
|
<i className="icon icon-inventory"></i>
|
|
|
|
{ (unseenInventoryCount > 0) && (
|
|
|
|
<div className="position-absolute bg-danger px-1 py-0 rounded shadow count">{ unseenInventoryCount }</div>) }
|
|
|
|
</li>
|
|
|
|
<li className="list-group-item">
|
|
|
|
<i className="icon icon-friendall"></i>
|
|
|
|
{ (unseenFriendListCount > 0) && (
|
|
|
|
<div className="position-absolute bg-danger px-1 py-0 rounded shadow count">{ unseenFriendListCount }</div>) }
|
|
|
|
</li>
|
2021-04-18 06:58:57 +02:00
|
|
|
<li>
|
|
|
|
<input type="number" onKeyUp={ onKeyUp } />
|
|
|
|
</li>
|
2021-04-15 08:23:55 +02:00
|
|
|
<li className="list-group-item">
|
2021-04-14 23:47:12 +02:00
|
|
|
{ userInfo && <AvatarImageView figure={ userInfo.figure } direction={ 2 } headOnly={ true } /> }
|
2021-04-14 21:12:16 +02:00
|
|
|
{ (unseenAchievementsCount > 0) && (
|
|
|
|
<div className="position-absolute bg-danger px-1 py-0 rounded shadow count">{ unseenAchievementsCount }</div>) }
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
2021-04-21 05:36:39 +02:00
|
|
|
</>
|
2021-04-14 20:24:24 +02:00
|
|
|
);
|
|
|
|
}
|