import React, { useState } from 'react'; import PropTypes from 'prop-types'; import './DrawerHeader.scss'; import { twemojify } from '../../../util/twemojify'; import initMatrix from '../../../client/initMatrix'; import cons from '../../../client/state/cons'; import { openPublicRooms, openCreateRoom, openInviteUser, openReusableContextMenu, } from '../../../client/action/navigation'; import { createSpaceShortcut, deleteSpaceShortcut } from '../../../client/action/room'; import { getEventCords } from '../../../util/common'; import { blurOnBubbling } from '../../atoms/button/script'; import Text from '../../atoms/text/Text'; import RawIcon from '../../atoms/system-icons/RawIcon'; import Header, { TitleWrapper } from '../../atoms/header/Header'; import IconButton from '../../atoms/button/IconButton'; import ContextMenu, { MenuItem, MenuHeader } from '../../atoms/context-menu/ContextMenu'; import SpaceOptions from '../../molecules/space-options/SpaceOptions'; import PlusIC from '../../../../public/res/ic/outlined/plus.svg'; import HashPlusIC from '../../../../public/res/ic/outlined/hash-plus.svg'; import HashSearchIC from '../../../../public/res/ic/outlined/hash-search.svg'; import ChevronBottomIC from '../../../../public/res/ic/outlined/chevron-bottom.svg'; import PinIC from '../../../../public/res/ic/outlined/pin.svg'; import PinFilledIC from '../../../../public/res/ic/filled/pin.svg'; function DrawerHeader({ selectedTab, spaceId }) { const [, forceUpdate] = useState({}); const mx = initMatrix.matrixClient; const { spaceShortcut } = initMatrix.roomList; const tabName = selectedTab !== cons.tabs.DIRECTS ? 'Home' : 'Direct messages'; const room = mx.getRoom(spaceId); const spaceName = selectedTab === cons.tabs.DIRECTS ? null : (room?.name || null); const openSpaceOptions = (e) => { e.preventDefault(); openReusableContextMenu( 'bottom', getEventCords(e, '.drawer-header__btn'), (closeMenu) => , ); }; return (
{spaceName ? ( ) : ( {tabName} )} {spaceName && ( { if (spaceShortcut.has(spaceId)) deleteSpaceShortcut(spaceId); else createSpaceShortcut(spaceId); forceUpdate({}); }} /> )} { selectedTab === cons.tabs.DIRECTS && openInviteUser()} tooltip="Start DM" src={PlusIC} size="normal" /> } { selectedTab !== cons.tabs.DIRECTS && !spaceName && ( <> ( <> Add room { hideMenu(); openCreateRoom(); }} > Create new room { hideMenu(); openPublicRooms(); }} > Add public room )} render={(toggleMenu) => ()} /> )}
); } DrawerHeader.defaultProps = { spaceId: null, }; DrawerHeader.propTypes = { selectedTab: PropTypes.string.isRequired, spaceId: PropTypes.string, }; export default DrawerHeader;