You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.4 KiB
TypeScript
89 lines
2.4 KiB
TypeScript
import React from 'react';
|
|
|
|
import { LeftPaneSections, SectionType } from './session/LeftPaneSections';
|
|
import { LeftPaneMessageSection } from './session/LeftPaneMessageSection';
|
|
|
|
import { PropsData as ConversationListItemPropsType } from './ConversationListItem';
|
|
import { PropsData as SearchResultsProps } from './SearchResults';
|
|
import { SearchOptions } from '../types/Search';
|
|
|
|
interface State {
|
|
selectedSection: SectionType;
|
|
}
|
|
|
|
interface Props {
|
|
conversations?: Array<ConversationListItemPropsType>;
|
|
searchResults?: SearchResultsProps;
|
|
searchTerm: string;
|
|
isSecondaryDevice: boolean;
|
|
|
|
// Action Creators
|
|
startNewConversation: (
|
|
query: string,
|
|
options: { regionCode: string }
|
|
) => void;
|
|
|
|
openConversationInternal: (id: string, messageId?: string) => void;
|
|
updateSearchTerm: (searchTerm: string) => void;
|
|
search: (query: string, options: SearchOptions) => void;
|
|
clearSearch: () => void;
|
|
}
|
|
|
|
export class LeftPane extends React.Component<Props, State> {
|
|
public state = {
|
|
selectedSection: SectionType.Message,
|
|
};
|
|
|
|
public constructor(props: any) {
|
|
super(props);
|
|
this.handleSectionSelected = this.handleSectionSelected.bind(this);
|
|
}
|
|
|
|
public handleSectionSelected(section: SectionType) {
|
|
this.setState({ selectedSection: section });
|
|
}
|
|
|
|
public render(): JSX.Element {
|
|
return (
|
|
<div className="module-left-pane-session">
|
|
<LeftPaneSections
|
|
selectedSection={this.state.selectedSection}
|
|
onSectionSelected={this.handleSectionSelected}
|
|
/>
|
|
<div className="module-left-pane">
|
|
{this.state.selectedSection === SectionType.Message &&
|
|
this.renderMessageSection()}
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|
|
|
|
private renderMessageSection() {
|
|
const {
|
|
startNewConversation,
|
|
openConversationInternal,
|
|
conversations,
|
|
searchResults,
|
|
searchTerm,
|
|
isSecondaryDevice,
|
|
updateSearchTerm,
|
|
search,
|
|
clearSearch,
|
|
} = this.props;
|
|
|
|
return (
|
|
<LeftPaneMessageSection
|
|
startNewConversation={startNewConversation}
|
|
openConversationInternal={openConversationInternal}
|
|
conversations={conversations}
|
|
searchResults={searchResults}
|
|
searchTerm={searchTerm}
|
|
isSecondaryDevice={isSecondaryDevice}
|
|
updateSearchTerm={updateSearchTerm}
|
|
search={search}
|
|
clearSearch={clearSearch}
|
|
/>
|
|
);
|
|
}
|
|
}
|