diff --git a/web/sidebar/left-layout-aside.react.js b/web/sidebar/left-layout-aside.react.js index e8bc08f29..6054c390c 100644 --- a/web/sidebar/left-layout-aside.react.js +++ b/web/sidebar/left-layout-aside.react.js @@ -1,31 +1,31 @@ // @flow import * as React from 'react'; -import AppSwitcher from './app-switcher.react.js'; import CommunityPicker from './community-picker.react.js'; import css from './left-layout-aside.css'; import SettingsSwitcher from './settings-switcher.react.js'; import { useSelector } from '../redux/redux-utils.js'; +import AppSwitcher from '../topbar/app-switcher.react.js'; function LeftLayoutAside(): React.Node { const navInfo = useSelector(state => state.navInfo); const navigationPanel = React.useMemo(() => { if (navInfo.tab === 'settings') { return ; } return ; }, [navInfo.tab]); return ( ); } const MemoizedLeftLayoutAside: React.ComponentType<{}> = React.memo<{}>( LeftLayoutAside, ); export default MemoizedLeftLayoutAside; diff --git a/web/sidebar/app-switcher.react.js b/web/topbar/app-switcher.react.js similarity index 96% rename from web/sidebar/app-switcher.react.js rename to web/topbar/app-switcher.react.js index e84327c73..3884025dd 100644 --- a/web/sidebar/app-switcher.react.js +++ b/web/topbar/app-switcher.react.js @@ -1,134 +1,134 @@ // @flow import * as React from 'react'; import { useDispatch } from 'react-redux'; import SWMansionIcon from 'lib/components/SWMansionIcon.react.js'; import { mostRecentlyReadThreadSelector, unreadCount, } from 'lib/selectors/thread-selectors.js'; -import css from './left-layout-aside.css'; -import NavigationPanel from './navigation-panel.react.js'; import { updateNavInfoActionType } from '../redux/action-types.js'; import { useSelector } from '../redux/redux-utils.js'; import { navTabSelector } from '../selectors/nav-selectors.js'; +import css from '../sidebar/left-layout-aside.css'; +import NavigationPanel from '../sidebar/navigation-panel.react.js'; function AppSwitcher(): React.Node { const activeChatThreadID = useSelector( state => state.navInfo.activeChatThreadID, ); const mostRecentlyReadThread = useSelector(mostRecentlyReadThreadSelector); const isActiveThreadCurrentlyUnread = useSelector( state => !activeChatThreadID || !!state.threadStore.threadInfos[activeChatThreadID]?.currentUser.unread, ); const dispatch = useDispatch(); const onClickChat = React.useCallback( (event: SyntheticEvent) => { event.preventDefault(); dispatch({ type: updateNavInfoActionType, payload: { tab: 'chat', activeChatThreadID: isActiveThreadCurrentlyUnread ? mostRecentlyReadThread : activeChatThreadID, }, }); }, [ dispatch, isActiveThreadCurrentlyUnread, mostRecentlyReadThread, activeChatThreadID, ], ); const boundUnreadCount = useSelector(unreadCount); let chatBadge = null; if (boundUnreadCount > 0) { chatBadge = {boundUnreadCount}; } const chatNavigationItem = React.useMemo( () => ( {chatBadge}

Chat

), [chatBadge, onClickChat], ); const onClickCalendar = React.useCallback( (event: SyntheticEvent) => { event.preventDefault(); dispatch({ type: updateNavInfoActionType, payload: { tab: 'calendar' }, }); }, [dispatch], ); const isCalendarEnabled = useSelector(state => state.enabledApps.calendar); const calendarNavigationItem = React.useMemo(() => { if (!isCalendarEnabled) { return null; } return (

Calendar

); }, [isCalendarEnabled, onClickCalendar]); const onClickApps = React.useCallback( (event: SyntheticEvent) => { event.preventDefault(); dispatch({ type: updateNavInfoActionType, payload: { tab: 'apps', }, }); }, [dispatch], ); const appNavigationItem = React.useMemo( () => (

Apps

), [onClickApps], ); return ( {chatNavigationItem} {calendarNavigationItem} {appNavigationItem} ); } export default AppSwitcher;