import { RoomSessionEvent } from 'nitro-renderer'; import { createContext, FC, useCallback, useEffect, useState } from 'react'; import { InventoryEvent } from '../../events'; import { DraggableWindow } from '../../hooks/draggable-window/DraggableWindow'; import { useRoomSessionManagerEvent } from '../../hooks/events/nitro/session/room-session-manager-event'; import { useUiEvent } from '../../hooks/events/ui/ui-event'; import { LocalizeText } from '../../utils/LocalizeText'; import { InventoryMessageHandler } from './InventoryMessageHandler'; import { IInventoryContext, InventoryTabs, InventoryViewProps } from './InventoryView.types'; import { InventoryTabsContentView } from './tabs-content/InventoryTabsContentView'; import { InventoryTabsSelectorView } from './tabs-selector/InventoryTabsSelectorView'; export const InventoryContext = createContext(null); export const InventoryView: FC = props => { const [ isVisible, setIsVisible ] = useState(false); const [ currentTab, setCurrentTab ] = useState(null); const [ tabs, setTabs ] = useState([ InventoryTabs.FURNITURE, InventoryTabs.BOTS, InventoryTabs.PETS, InventoryTabs.BADGES ]); useEffect(() => { setCurrentTab(tabs[0]); }, [ tabs ]); const onInventoryEvent = useCallback((event: InventoryEvent) => { switch(event.type) { case InventoryEvent.SHOW_INVENTORY: setIsVisible(true); return; case InventoryEvent.TOGGLE_INVENTORY: setIsVisible(value => !value); return; } }, []); useUiEvent(InventoryEvent.SHOW_INVENTORY, onInventoryEvent); useUiEvent(InventoryEvent.TOGGLE_INVENTORY, onInventoryEvent); const onRoomSessionEvent = useCallback((event: RoomSessionEvent) => { switch(event.type) { case RoomSessionEvent.CREATED: // return; case RoomSessionEvent.ENDED: setIsVisible(false); return; } }, []); useRoomSessionManagerEvent(RoomSessionEvent.CREATED, onRoomSessionEvent); useRoomSessionManagerEvent(RoomSessionEvent.ENDED, onRoomSessionEvent); function hideInventory(): void { setIsVisible(false); } return ( { isVisible &&
{ LocalizeText('inventory.title') }
}
); }