import React from 'react'; import classNames from 'classnames'; import { LeftPane } from '../LeftPane'; import { MainViewController } from '../MainViewController'; import { SessionButton, SessionButtonColor, SessionButtonType, } from './SessionButton'; import { SessionIcon, SessionIconSize, SessionIconType } from './icon'; import { SessionSearchInput } from './SessionSearchInput'; import { SessionSettingCategory } from './settings/SessionSettings'; export interface State { settingCategory: SessionSettingCategory; searchQuery: string; } export class LeftPaneSettingSection extends React.Component { public constructor(props: any) { super(props); this.state = { settingCategory: SessionSettingCategory.Appearance, searchQuery: '', }; this.setCategory = this.setCategory.bind(this); } public componentDidMount() { MainViewController.renderSettingsView(this.state.settingCategory); } public componentDidUpdate() { MainViewController.renderSettingsView(this.state.settingCategory); } public render(): JSX.Element { return (
{this.renderHeader()} {this.renderSettings()}
); } public renderHeader(): JSX.Element | undefined { const labels = [window.i18n('settingsHeader')]; return LeftPane.RENDER_HEADER( labels, null, undefined, undefined, undefined ); } public renderRow(item: any): JSX.Element { return (
{ this.setCategory(item.id); }} >
{item.title}
{item.description}
{item.id === this.state.settingCategory && ( )}
); } public renderCategories(): JSX.Element { const categories = this.getCategories().filter(item => !item.hidden); return (
{categories.map(item => this.renderRow(item))}
); } public renderSearch() { return (
null} placeholder="" />
); } public renderSettings(): JSX.Element { const showSearch = false; return (
{showSearch && this.renderSearch()} {this.renderCategories()} {this.renderBottomButtons()}
); } public renderBottomButtons(): JSX.Element { const deleteAccount = window.i18n('deleteAccount'); const showSeed = window.i18n('showSeed'); return (
); } public onDeleteAccount() { const params = { title: window.i18n('deleteAccount'), message: window.i18n('deleteAccountWarning'), messageSub: window.i18n('deleteAccountWarningSub'), resolve: window.deleteAccount, okTheme: 'danger', }; window.confirmationDialog(params); } public getCategories() { return [ { id: SessionSettingCategory.Appearance, title: window.i18n('appearanceSettingsTitle'), description: window.i18n('appearanceSettingsDescription'), hidden: false, }, { id: SessionSettingCategory.Privacy, title: window.i18n('privacySettingsTitle'), description: window.i18n('privacySettingsDescription'), hidden: false, }, { id: SessionSettingCategory.Permissions, title: window.i18n('permissionSettingsTitle'), description: window.i18n('permissionSettingsDescription'), hidden: true, }, { id: SessionSettingCategory.Notifications, title: window.i18n('notificationSettingsTitle'), description: window.i18n('notificationSettingsDescription'), hidden: false, }, { id: SessionSettingCategory.Devices, title: window.i18n('devicesSettingsTitle'), description: window.i18n('devicesSettingsDescription'), }, ]; } public setCategory(category: SessionSettingCategory) { this.setState({ settingCategory: category, }); } }