diff --git a/src/components/views/settings/EventIndexPanel.js b/src/components/views/settings/EventIndexPanel.js
new file mode 100644
index 0000000000..98ba83f62b
--- /dev/null
+++ b/src/components/views/settings/EventIndexPanel.js
@@ -0,0 +1,131 @@
+/*
+Copyright 2020 The Matrix.org Foundation C.I.C.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+import React from 'react';
+import PropTypes from 'prop-types';
+import classNames from 'classnames';
+
+import * as sdk from '../../../index';
+import { _t } from '../../../languageHandler';
+import Modal from '../../../Modal';
+import SettingsStore, {SettingLevel} from "../../../settings/SettingsStore";
+import LabelledToggleSwitch from "../elements/LabelledToggleSwitch";
+import Field from "../elements/Field";
+import {formatBytes} from "../../../utils/FormattingUtils";
+import EventIndexPeg from "../../../indexing/EventIndexPeg";
+
+export default class EventIndexPanel extends React.Component {
+ constructor() {
+ super();
+
+ this.state = {
+ eventIndexSize: 0,
+ crawlingRooms: 0,
+ totalCrawlingRooms: 0,
+ eventIndexingEnabled:
+ SettingsStore.getValueAt(SettingLevel.DEVICE, 'enableCrawling'),
+ crawlerSleepTime:
+ SettingsStore.getValueAt(SettingLevel.DEVICE, 'crawlerSleepTime'),
+ };
+ }
+
+ async componentWillMount(): void {
+ let eventIndexSize = 0;
+ let crawlingRooms = 0;
+ let totalCrawlingRooms = 0;
+
+ const eventIndex = EventIndexPeg.get();
+
+ if (eventIndex !== null) {
+ eventIndexSize = await eventIndex.indexSize();
+ const crawledRooms = eventIndex.currentlyCrawledRooms();
+ crawlingRooms = crawledRooms.crawlingRooms.size;
+ totalCrawlingRooms = crawledRooms.totalRooms.size;
+ }
+
+ this.setState({
+ eventIndexSize,
+ crawlingRooms,
+ totalCrawlingRooms,
+ });
+ }
+
+ _onEventIndexingEnabledChange = (checked) => {
+ SettingsStore.setValue("enableCrawling", null, SettingLevel.DEVICE, checked);
+
+ if (checked) EventIndexPeg.start();
+ else EventIndexPeg.stop();
+
+ this.setState({eventIndexingEnabled: checked});
+ }
+
+ _onCrawlerSleepTimeChange = (e) => {
+ this.setState({crawlerSleepTime: e.target.value});
+ SettingsStore.setValue("crawlerSleepTime", null, SettingLevel.DEVICE, e.target.value);
+ }
+
+ render() {
+ let eventIndexingSettings = null;
+ let crawlerState;
+
+ if (!this.state.eventIndexingEnabled) {
+ crawlerState =
{_t("Message downloader is stopped.")}
;
+ } else if (this.state.crawlingRooms === 0) {
+ crawlerState = {_t("Message downloader is currently idle.")}
;
+ } else {
+ crawlerState = (
+ {_t(
+ "Currently downloading mesages in %(crawlingRooms)s of %(totalRooms)s rooms.",
+ { crawlingRooms: this.state.crawlingRooms,
+ totalRooms: this.state.totalCrawlingRooms,
+ })}
+
+ );
+ }
+
+ if (EventIndexPeg.get() !== null) {
+ eventIndexingSettings = (
+
+
{_t("Encrypted search")}
+ {
+ _t( "To enable search in encrypted rooms, Riot needs to run " +
+ "a background process to download historical messages " +
+ "from those rooms to your computer.",
+ )
+ }
+
+ {_t("Message disk usage:")} {formatBytes(this.state.eventIndexSize, 0)}
+ {crawlerState}
+
+
+
+
+
+
+ );
+ }
+
+ return eventIndexingSettings;
+ }
+}
diff --git a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js
index e47f591dcb..5ecafcc5ae 100644
--- a/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js
+++ b/src/components/views/settings/tabs/user/PreferencesUserSettingsTab.js
@@ -23,7 +23,6 @@ import SettingsStore from "../../../../../settings/SettingsStore";
import Field from "../../../elements/Field";
import * as sdk from "../../../../..";
import PlatformPeg from "../../../../../PlatformPeg";
-import EventIndexPeg from "../../../../../indexing/EventIndexPeg";
import {formatBytes} from "../../../../../utils/FormattingUtils";
export default class PreferencesUserSettingsTab extends React.Component {
@@ -72,13 +71,6 @@ export default class PreferencesUserSettingsTab extends React.Component {
alwaysShowMenuBarSupported: false,
minimizeToTray: true,
minimizeToTraySupported: false,
- eventIndexSize: 0,
- crawlingRooms: 0,
- totalCrawlingRooms: 0,
- eventIndexingEnabled:
- SettingsStore.getValueAt(SettingLevel.DEVICE, 'enableCrawling'),
- crawlerSleepTime:
- SettingsStore.getValueAt(SettingLevel.DEVICE, 'crawlerSleepTime'),
autocompleteDelay:
SettingsStore.getValueAt(SettingLevel.DEVICE, 'autocompleteDelay').toString(10),
readMarkerInViewThresholdMs:
@@ -109,19 +101,6 @@ export default class PreferencesUserSettingsTab extends React.Component {
minimizeToTray = await platform.getMinimizeToTrayEnabled();
}
- let eventIndexSize = 0;
- let crawlingRooms = 0;
- let totalCrawlingRooms = 0;
-
- const eventIndex = EventIndexPeg.get();
-
- if (eventIndex !== null) {
- eventIndexSize = await eventIndex.indexSize();
- const crawledRooms = eventIndex.currentlyCrawledRooms();
- crawlingRooms = crawledRooms.crawlingRooms.size;
- totalCrawlingRooms = crawledRooms.totalRooms.size;
- }
-
this.setState({
autoLaunch,
autoLaunchSupported,
@@ -129,9 +108,6 @@ export default class PreferencesUserSettingsTab extends React.Component {
alwaysShowMenuBar,
minimizeToTraySupported,
minimizeToTray,
- eventIndexSize,
- crawlingRooms,
- totalCrawlingRooms,
});
}
@@ -162,26 +138,14 @@ export default class PreferencesUserSettingsTab extends React.Component {
SettingsStore.setValue("readMarkerOutOfViewThresholdMs", null, SettingLevel.DEVICE, e.target.value);
};
- _onEventIndexingEnabledChange = (checked) => {
- SettingsStore.setValue("enableCrawling", null, SettingLevel.DEVICE, checked);
-
- if (checked) EventIndexPeg.start();
- else EventIndexPeg.stop();
-
- this.setState({eventIndexingEnabled: checked});
- }
-
- _onCrawlerSleepTimeChange = (e) => {
- this.setState({crawlerSleepTime: e.target.value});
- SettingsStore.setValue("crawlerSleepTime", null, SettingLevel.DEVICE, e.target.value);
- }
-
_renderGroup(settingIds) {
const SettingsFlag = sdk.getComponent("views.elements.SettingsFlag");
return settingIds.map(i => );
}
render() {
+ const EventIndexPanel = sdk.getComponent('views.settings.EventIndexPanel');
+
let autoLaunchOption = null;
if (this.state.autoLaunchSupported) {
autoLaunchOption = ;
}
- let eventIndexingSettings = null;
- let crawlerState;
-
- if (!this.state.eventIndexingEnabled) {
- crawlerState = {_t("Message downloader is stopped.")}
;
- } else if (this.state.crawlingRooms === 0) {
- crawlerState = {_t("Message downloader is currently idle.")}
;
- } else {
- crawlerState = (
- {_t(
- "Currently downloading mesages in %(crawlingRooms)s of %(totalRooms)s rooms.",
- { crawlingRooms: this.state.crawlingRooms,
- totalRooms: this.state.totalCrawlingRooms,
- })}
-
- );
- }
-
- if (EventIndexPeg.get() !== null) {
- eventIndexingSettings = (
-
-
{_t("Encrypted search")}
- {
- _t( "To enable search in encrypted rooms, Riot needs to run " +
- "a background process to download historical messages " +
- "from those rooms to your computer.",
- )
- }
-
- {_t("Message disk usage:")} {formatBytes(this.state.eventIndexSize, 0)}
- {crawlerState}
-
-
-
-
-
-
- );
- }
-
return (
{_t("Preferences")}
- {eventIndexingSettings}
+
{_t("Composer")}