import React, { useState, useEffect, useRef } from 'react'; import './Client.scss'; import { initHotkeys } from '../../../client/event/hotkeys'; import { initRoomListListener } from '../../../client/event/roomList'; import Text from '../../atoms/text/Text'; import Spinner from '../../atoms/spinner/Spinner'; import Navigation from '../../organisms/navigation/Navigation'; import ContextMenu, { MenuItem } from '../../atoms/context-menu/ContextMenu'; import IconButton from '../../atoms/button/IconButton'; import ReusableContextMenu from '../../atoms/context-menu/ReusableContextMenu'; import Room from '../../organisms/room/Room'; import Windows from '../../organisms/pw/Windows'; import Dialogs from '../../organisms/pw/Dialogs'; import EmojiBoardOpener from '../../organisms/emoji-board/EmojiBoardOpener'; import initMatrix from '../../../client/initMatrix'; import navigation from '../../../client/state/navigation'; import cons from '../../../client/state/cons'; import DragDrop from '../../organisms/drag-drop/DragDrop'; import VerticalMenuIC from '../../../../public/res/ic/outlined/vertical-menu.svg'; function Client() { const [isLoading, changeLoading] = useState(true); const [loadingMsg, setLoadingMsg] = useState('Heating up'); const [dragCounter, setDragCounter] = useState(0); const classNameHidden = 'client__item-hidden'; const navWrapperRef = useRef(null); const roomWrapperRef = useRef(null); function onRoomSelected() { navWrapperRef.current?.classList.add(classNameHidden); roomWrapperRef.current?.classList.remove(classNameHidden); } function onNavigationSelected() { navWrapperRef.current?.classList.remove(classNameHidden); roomWrapperRef.current?.classList.add(classNameHidden); } useEffect(() => { navigation.on(cons.events.navigation.ROOM_SELECTED, onRoomSelected); navigation.on(cons.events.navigation.NAVIGATION_OPENED, onNavigationSelected); return (() => { navigation.removeListener(cons.events.navigation.ROOM_SELECTED, onRoomSelected); navigation.removeListener(cons.events.navigation.NAVIGATION_OPENED, onNavigationSelected); }); }, []); useEffect(() => { let counter = 0; const iId = setInterval(() => { const msgList = [ 'Almost there...', 'Looks like you have a lot of stuff to heat up!', ]; if (counter === msgList.length - 1) { setLoadingMsg(msgList[msgList.length - 1]); clearInterval(iId); return; } setLoadingMsg(msgList[counter]); counter += 1; }, 15000); initMatrix.once('init_loading_finished', () => { clearInterval(iId); initHotkeys(); initRoomListListener(initMatrix.roomList); changeLoading(false); }); initMatrix.init(); }, []); if (isLoading) { return (