import React, { useState, useEffect } from 'react'; import './SideBar.scss'; import initMatrix from '../../../client/initMatrix'; import cons from '../../../client/state/cons'; import colorMXID from '../../../util/colorMXID'; import logout from '../../../client/action/logout'; import { selectTab, openInviteList, openPublicRooms, openSettings, } from '../../../client/action/navigation'; import navigation from '../../../client/state/navigation'; import ScrollView from '../../atoms/scroll/ScrollView'; import SidebarAvatar from '../../molecules/sidebar-avatar/SidebarAvatar'; import ContextMenu, { MenuItem, MenuHeader, MenuBorder } from '../../atoms/context-menu/ContextMenu'; import HomeIC from '../../../../public/res/ic/outlined/home.svg'; import UserIC from '../../../../public/res/ic/outlined/user.svg'; import HashSearchIC from '../../../../public/res/ic/outlined/hash-search.svg'; import InviteIC from '../../../../public/res/ic/outlined/invite.svg'; import SettingsIC from '../../../../public/res/ic/outlined/settings.svg'; import PowerIC from '../../../../public/res/ic/outlined/power.svg'; function ProfileAvatarMenu() { const mx = initMatrix.matrixClient; return ( ( <> {mx.getUserId()} {/* ''}>Profile */} {/* ''}>Notification settings */} { hideMenu(); openSettings(); }} > Settings Logout )} render={(toggleMenu) => ( )} /> ); } function SideBar() { const { roomList } = initMatrix; const mx = initMatrix.matrixClient; const totalInviteCount = () => roomList.inviteRooms.size + roomList.inviteSpaces.size + roomList.inviteDirects.size; const [totalInvites, updateTotalInvites] = useState(totalInviteCount()); const [selectedTab, setSelectedTab] = useState(navigation.selectedTab); const [, forceUpdate] = useState({}); function onTabSelected(tabId) { setSelectedTab(tabId); } function onInviteListChange() { updateTotalInvites(totalInviteCount()); } function onSpaceShortcutUpdated() { forceUpdate({}); } useEffect(() => { navigation.on(cons.events.navigation.TAB_SELECTED, onTabSelected); roomList.on(cons.events.roomList.SPACE_SHORTCUT_UPDATED, onSpaceShortcutUpdated); initMatrix.roomList.on( cons.events.roomList.INVITELIST_UPDATED, onInviteListChange, ); return () => { navigation.removeListener(cons.events.navigation.TAB_SELECTED, onTabSelected); roomList.removeListener(cons.events.roomList.SPACE_SHORTCUT_UPDATED, onSpaceShortcutUpdated); initMatrix.roomList.removeListener( cons.events.roomList.INVITELIST_UPDATED, onInviteListChange, ); }; }, []); return (
selectTab(cons.tabs.HOME)} tooltip="Home" iconSrc={HomeIC} /> selectTab(cons.tabs.DIRECTS)} tooltip="People" iconSrc={UserIC} /> openPublicRooms()} tooltip="Public rooms" iconSrc={HashSearchIC} />
{ [...roomList.spaceShortcut].map((shortcut) => { const sRoomId = shortcut; const room = mx.getRoom(sRoomId); return ( selectTab(shortcut)} /> ); }) }
{ totalInvites !== 0 && ( openInviteList()} tooltip="Invites" iconSrc={InviteIC} /> )}
); } export default SideBar;