import React from 'react'; import { ActionsPanel, SectionType } from './session/ActionsPanel'; import { LeftPaneMessageSection } from './session/LeftPaneMessageSection'; import { openConversationExternal } from '../state/ducks/conversations'; import { LeftPaneContactSection } from './session/LeftPaneContactSection'; import { LeftPaneSettingSection } from './session/LeftPaneSettingSection'; import { SessionTheme } from '../state/ducks/SessionTheme'; import { SessionOffline } from './session/network/SessionOffline'; import { SessionExpiredWarning } from './session/network/SessionExpiredWarning'; import { getFocusedSection } from '../state/selectors/section'; import { useDispatch, useSelector } from 'react-redux'; import { getLeftPaneLists } from '../state/selectors/conversations'; import { getQuery, getSearchResults, isSearching } from '../state/selectors/search'; import { clearSearch, search, updateSearchTerm } from '../state/ducks/search'; import { getTheme } from '../state/selectors/theme'; // from https://github.com/bvaughn/react-virtualized/blob/fb3484ed5dcc41bffae8eab029126c0fb8f7abc0/source/List/types.js#L5 export type RowRendererParamsType = { index: number; isScrolling: boolean; isVisible: boolean; key: string; parent: Object; style: Object; }; type Props = { isExpired: boolean; }; const InnerLeftPaneMessageSection = (props: { isExpired: boolean }) => { const dispatch = useDispatch(); const showSearch = useSelector(isSearching); const searchTerm = useSelector(getQuery); const searchResults = showSearch ? useSelector(getSearchResults) : undefined; const lists = showSearch ? undefined : useSelector(getLeftPaneLists); const theme = useSelector(getTheme); // tslint:disable: use-simple-attributes return ( <> {props.isExpired && } dispatch(openConversationExternal(id, messageId)) } conversations={lists?.conversations || []} contacts={lists?.contacts || []} searchResults={searchResults} searchTerm={searchTerm} updateSearchTerm={query => dispatch(updateSearchTerm(query))} search={(query, options) => dispatch(search(query, options))} clearSearch={() => dispatch(clearSearch())} /> ); }; const InnerLeftPaneContactSection = () => { const dispatch = useDispatch(); const theme = useSelector(getTheme); const showSearch = useSelector(isSearching); const lists = showSearch ? undefined : useSelector(getLeftPaneLists); const directContacts = lists?.contacts || []; return ( <> dispatch(openConversationExternal(id, messageId)) } directContacts={directContacts} theme={theme} /> ); }; const LeftPaneSettingsSection = () => { return ; }; const LeftPaneSection = (props: { isExpired: boolean }) => { const focusedSection = useSelector(getFocusedSection); if (focusedSection === SectionType.Message) { return ; } if (focusedSection === SectionType.Contact) { return ; } if (focusedSection === SectionType.Settings) { return ; } return <>; }; export const LeftPane = (props: Props) => { const theme = useSelector(getTheme); return (
); };