import React from 'react'; import classNames from 'classnames'; import { LeftPane } from '../LeftPane'; import { SessionButton, SessionButtonColor, SessionButtonType, } from './SessionButton'; import { SessionIcon, SessionIconSize, SessionIconType } from './icon'; import { SessionSearchInput } from './SessionSearchInput'; import { SessionSettingCategory } from './settings/SessionSettings'; interface Props { isSecondaryDevice: boolean; settingsCategory: SessionSettingCategory; showSessionSettingsCategory: (category: SessionSettingCategory) => void; } export interface State { searchQuery: string; } export class LeftPaneSettingSection extends React.Component { public constructor(props: any) { super(props); this.state = { searchQuery: '', }; this.setCategory = this.setCategory.bind(this); this.onDeleteAccount = this.onDeleteAccount.bind(this); } 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, undefined ); } public renderRow(item: any): JSX.Element { const { settingsCategory } = this.props; return (
{ this.setCategory(item.id); }} >
{item.title}
{item.id === settingsCategory && ( )}
); } 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 | undefined { const { isSecondaryDevice } = this.props; const dangerButtonText = isSecondaryDevice ? window.i18n('unpairDevice') : window.i18n('clearAllData'); const showRecoveryPhrase = window.i18n('showRecoveryPhrase'); return (
{!isSecondaryDevice && ( )}
); } public onDeleteAccount() { const { isSecondaryDevice } = this.props; const title = window.i18n( isSecondaryDevice ? 'unpairDevice' : 'clearAllData' ); const message = window.i18n( isSecondaryDevice ? 'unpairDeviceWarning' : 'deleteAccountWarning' ); const messageSub = isSecondaryDevice ? window.i18n('unpairDeviceWarningSub') : ''; window.confirmationDialog({ title, message, messageSub, resolve: window.deleteAccount, okTheme: 'danger', }); } public getCategories() { const { isSecondaryDevice } = this.props; return [ { id: SessionSettingCategory.Appearance, title: window.i18n('appearanceSettingsTitle'), hidden: false, }, { id: SessionSettingCategory.Privacy, title: window.i18n('privacySettingsTitle'), hidden: false, }, { id: SessionSettingCategory.Blocked, title: window.i18n('blockedSettingsTitle'), hidden: false, }, { id: SessionSettingCategory.Permissions, title: window.i18n('permissionSettingsTitle'), hidden: true, }, { id: SessionSettingCategory.Notifications, title: window.i18n('notificationsSettingsTitle'), hidden: false, }, { id: SessionSettingCategory.Devices, title: window.i18n('devicesSettingsTitle'), hidden: !window.lokiFeatureFlags.useMultiDevice || isSecondaryDevice, }, ]; } public setCategory(category: SessionSettingCategory) { this.props.showSessionSettingsCategory(category); } }