From a37f415a21305a4b5643206ed3f756c3b1ff5051 Mon Sep 17 00:00:00 2001 From: Germain Souquet Date: Thu, 13 May 2021 13:00:45 +0100 Subject: [PATCH] Do not eagerly decrypt breadcrumb rooms --- src/stores/BreadcrumbsStore.ts | 26 -------------------------- 1 file changed, 26 deletions(-) diff --git a/src/stores/BreadcrumbsStore.ts b/src/stores/BreadcrumbsStore.ts index 2d59bc7d02..1a78a1b485 100644 --- a/src/stores/BreadcrumbsStore.ts +++ b/src/stores/BreadcrumbsStore.ts @@ -16,14 +16,12 @@ limitations under the License. import SettingsStore from "../settings/SettingsStore"; import { Room } from "matrix-js-sdk/src/models/room"; -import { EventType } from "matrix-js-sdk/src/@types/event"; import { ActionPayload } from "../dispatcher/payloads"; import { AsyncStoreWithClient } from "./AsyncStoreWithClient"; import defaultDispatcher from "../dispatcher/dispatcher"; import { arrayHasDiff } from "../utils/arrays"; import { isNullOrUndefined } from "matrix-js-sdk/src/utils"; import { SettingLevel } from "../settings/SettingLevel"; -import { MatrixClientPeg } from '../MatrixClientPeg'; const MAX_ROOMS = 20; // arbitrary const AUTOJOIN_WAIT_THRESHOLD_MS = 90000; // 90s, the time we wait for an autojoined room to show up @@ -61,30 +59,6 @@ export class BreadcrumbsStore extends AsyncStoreWithClient { return this.matrixClient && this.matrixClient.getVisibleRooms().length >= 20; } - componentDidUpdate(prevProps, prevState) { - const prevRoomCount = (prevState.rooms?.length || 0); - const currentRoomCount = (this.state.rooms?.length || 0) - - // Only decrypting the breadcrumb rooms events on app initialisation - // when room count transitions from 0 to the number of rooms it contains - if (prevRoomCount === 0 && currentRoomCount > prevRoomCount) { - const client = MatrixClientPeg.get(); - // Rooms in the breadcrumb have a good chance to be interacted with - // again by a user. Decrypting the messages ahead of time will help - // reduce content shift on first render - this.state.rooms?.forEach(async room => { - const [cryptoEvent] = room.currentState.getStateEvents(EventType.RoomEncryption); - if (cryptoEvent) { - if (!client.isRoomEncrypted(room.roomId)) { - // XXX: Private member access - await client._crypto.onCryptoEvent(cryptoEvent); - } - room?.decryptAllEvents(); - } - }); - } - } - protected async onAction(payload: ActionPayload) { if (!this.matrixClient) return;