9491.js.map (11418B)
1 {"version":3,"file":"bundles/12c8185ea2689492c07b/9491.js","mappings":"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","sources":["webpack://element-web/./src/async-components/views/dialogs/eventindex/ManageEventIndexDialog.tsx"],"sourcesContent":["/*\nCopyright 2024 New Vector Ltd.\nCopyright 2020, 2021 The Matrix.org Foundation C.I.C.\n\nSPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial\nPlease see LICENSE files in the repository root for full details.\n*/\n\nimport React, { type ChangeEvent } from \"react\";\nimport { type Room } from \"matrix-js-sdk/src/matrix\";\n\nimport { _t } from \"../../../../languageHandler\";\nimport SdkConfig from \"../../../../SdkConfig\";\nimport SettingsStore from \"../../../../settings/SettingsStore\";\nimport Modal from \"../../../../Modal\";\nimport { formatBytes, formatCountLong } from \"../../../../utils/FormattingUtils\";\nimport EventIndexPeg from \"../../../../indexing/EventIndexPeg\";\nimport { SettingLevel } from \"../../../../settings/SettingLevel\";\nimport Field from \"../../../../components/views/elements/Field\";\nimport BaseDialog from \"../../../../components/views/dialogs/BaseDialog\";\nimport DialogButtons from \"../../../../components/views/elements/DialogButtons\";\nimport { type IIndexStats } from \"../../../../indexing/BaseEventIndexManager\";\n\ninterface IProps {\n onFinished(): void;\n}\n\ninterface IState {\n /** Size of the event index, in bytes. */\n eventIndexSize: number;\n\n /** Number of events currently indexed in the event index. */\n eventCount: number;\n\n /** Number of rooms currently mentioned in the event index. */\n eventIndexRoomCount: number;\n\n /** Number of rooms awaiting crawling by the EventIndex. */\n crawlingRoomsCount: number;\n\n /** Number of encrypted rooms known by the MatrixClient. */\n roomCount: number;\n\n /** Room currently being crawled by the EventIndex. */\n currentRoom: string | null;\n\n /** Time to sleep between crawlwer passes, in milliseconds. */\n crawlerSleepTime: number;\n}\n\n/*\n * Allows the user to introspect the event index state and disable it.\n */\nexport default class ManageEventIndexDialog extends React.Component<IProps, IState> {\n public constructor(props: IProps) {\n super(props);\n\n this.state = {\n eventIndexSize: 0,\n eventCount: 0,\n eventIndexRoomCount: 0,\n crawlingRoomsCount: 0,\n roomCount: 0,\n currentRoom: null,\n crawlerSleepTime: SettingsStore.getValueAt(SettingLevel.DEVICE, \"crawlerSleepTime\"),\n };\n }\n\n public updateCurrentRoom = async (room: Room | null): Promise<void> => {\n const eventIndex = EventIndexPeg.get();\n if (!eventIndex) return;\n let stats: IIndexStats | undefined;\n\n try {\n stats = await eventIndex.getStats();\n } catch {\n // This call may fail if sporadically, not a huge issue as we will\n // try later again and probably succeed.\n return;\n }\n\n let currentRoom: string | null = null;\n\n if (room) currentRoom = room.name;\n const roomStats = eventIndex.crawlingRooms();\n const crawlingRoomsCount = roomStats.crawlingRooms.size;\n const roomCount = roomStats.totalRooms.size;\n\n this.setState({\n eventIndexSize: stats?.size ?? 0,\n eventCount: stats?.eventCount ?? 0,\n eventIndexRoomCount: stats?.roomCount ?? 0,\n crawlingRoomsCount: crawlingRoomsCount,\n roomCount: roomCount,\n currentRoom: currentRoom,\n });\n };\n\n public componentWillUnmount(): void {\n const eventIndex = EventIndexPeg.get();\n\n if (eventIndex !== null) {\n eventIndex.removeListener(\"changedCheckpoint\", this.updateCurrentRoom);\n }\n }\n\n public async componentDidMount(): Promise<void> {\n const eventIndex = EventIndexPeg.get();\n\n if (eventIndex !== null) {\n eventIndex.on(\"changedCheckpoint\", this.updateCurrentRoom);\n\n const room = eventIndex.currentRoom();\n await this.updateCurrentRoom(room);\n }\n }\n\n private onDisable = async (): Promise<void> => {\n const DisableEventIndexDialog = (await import(\"./DisableEventIndexDialog\")).default;\n Modal.createDialog(DisableEventIndexDialog, undefined, undefined, /* priority = */ false, /* static = */ true);\n };\n\n private onCrawlerSleepTimeChange = (e: ChangeEvent<HTMLInputElement>): void => {\n this.setState({ crawlerSleepTime: parseInt(e.target.value, 10) });\n SettingsStore.setValue(\"crawlerSleepTime\", null, SettingLevel.DEVICE, e.target.valueAsNumber);\n };\n\n public render(): React.ReactNode {\n const brand = SdkConfig.get().brand;\n\n let crawlerState;\n if (this.state.currentRoom === null) {\n crawlerState = _t(\"settings|security|message_search_indexing_idle\");\n } else {\n crawlerState = _t(\"settings|security|message_search_indexing\", { currentRoom: this.state.currentRoom });\n }\n\n const doneRooms = Math.max(0, this.state.eventIndexRoomCount - this.state.crawlingRoomsCount);\n\n const eventIndexingSettings = (\n <div>\n {_t(\"settings|security|message_search_intro\", {\n brand,\n })}\n <div className=\"mx_SettingsTab_subsectionText\">\n {crawlerState}\n <br />\n {_t(\"settings|security|message_search_space_used\")} {formatBytes(this.state.eventIndexSize, 0)}\n <br />\n {_t(\"settings|security|message_search_indexed_messages\")} {formatCountLong(this.state.eventCount)}\n <br />\n {_t(\"settings|security|message_search_indexed_rooms\")}{\" \"}\n {_t(\"settings|security|message_search_room_progress\", {\n doneRooms: formatCountLong(doneRooms),\n totalRooms: formatCountLong(this.state.roomCount),\n })}{\" \"}\n <br />\n {_t(\"settings|security|message_search_pending_rooms\", {\n pendingRooms: formatCountLong(this.state.crawlingRoomsCount),\n })}\n <br />\n <Field\n label={_t(\"settings|security|message_search_sleep_time\")}\n type=\"number\"\n value={this.state.crawlerSleepTime.toString()}\n onChange={this.onCrawlerSleepTimeChange}\n />\n </div>\n </div>\n );\n\n return (\n <BaseDialog\n className=\"mx_ManageEventIndexDialog\"\n onFinished={this.props.onFinished}\n title={_t(\"settings|security|message_search_section\")}\n >\n {eventIndexingSettings}\n <DialogButtons\n primaryButton={_t(\"action|done\")}\n onPrimaryButtonClick={this.props.onFinished}\n primaryButtonClass=\"primary\"\n cancelButton={_t(\"action|disable\")}\n onCancel={this.onDisable}\n cancelButtonClass=\"danger\"\n />\n </BaseDialog>\n );\n }\n}\n"],"names":["ManageEventIndexDialog","React","constructor","props","super","_defineProperty","this","async","_stats$size","_stats","_stats$eventCount","_stats2","_stats$roomCount","_stats3","eventIndex","EventIndexPeg","get","stats","getStats","currentRoom","room","name","roomStats","crawlingRooms","crawlingRoomsCount","size","roomCount","totalRooms","setState","eventIndexSize","eventCount","eventIndexRoomCount","DisableEventIndexDialog","__webpack_require__","e","then","bind","default","Modal","createDialog","undefined","crawlerSleepTime","parseInt","target","value","SettingsStore","setValue","SettingLevel","DEVICE","valueAsNumber","state","getValueAt","componentWillUnmount","removeListener","updateCurrentRoom","componentDidMount","on","render","brand","SdkConfig","crawlerState","_t","doneRooms","Math","max","eventIndexingSettings","className","formatBytes","formatCountLong","pendingRooms","Field","label","type","toString","onChange","onCrawlerSleepTimeChange","BaseDialog","onFinished","title","DialogButtons","primaryButton","onPrimaryButtonClick","primaryButtonClass","cancelButton","onCancel","onDisable","cancelButtonClass"],"sourceRoot":""}