From e5b7cdcedc7f85375bad1f304a01cacb731af74e Mon Sep 17 00:00:00 2001 From: David Langley Date: Wed, 20 Mar 2024 11:46:33 +0000 Subject: [PATCH 1/2] remove the LL dialogs and the use of InvalidStoreError --- src/Lifecycle.ts | 36 ------------ src/components/structures/MatrixChat.tsx | 13 +---- .../dialogs/LazyLoadingDisabledDialog.tsx | 55 ------------------- .../views/dialogs/LazyLoadingResyncDialog.tsx | 43 --------------- 4 files changed, 2 insertions(+), 145 deletions(-) delete mode 100644 src/components/views/dialogs/LazyLoadingDisabledDialog.tsx delete mode 100644 src/components/views/dialogs/LazyLoadingResyncDialog.tsx diff --git a/src/Lifecycle.ts b/src/Lifecycle.ts index b6fce3b6365..3e87541ddd6 100644 --- a/src/Lifecycle.ts +++ b/src/Lifecycle.ts @@ -19,7 +19,6 @@ limitations under the License. import { ReactNode } from "react"; import { createClient, MatrixClient, SSOAction, OidcTokenRefresher } from "matrix-js-sdk/src/matrix"; -import { InvalidStoreError } from "matrix-js-sdk/src/errors"; import { IEncryptedPayload } from "matrix-js-sdk/src/crypto/aes"; import { QueryDict } from "matrix-js-sdk/src/utils"; import { logger } from "matrix-js-sdk/src/logger"; @@ -52,8 +51,6 @@ import LegacyCallHandler from "./LegacyCallHandler"; import LifecycleCustomisations from "./customisations/Lifecycle"; import ErrorDialog from "./components/views/dialogs/ErrorDialog"; import { _t } from "./languageHandler"; -import LazyLoadingResyncDialog from "./components/views/dialogs/LazyLoadingResyncDialog"; -import LazyLoadingDisabledDialog from "./components/views/dialogs/LazyLoadingDisabledDialog"; import SessionRestoreErrorDialog from "./components/views/dialogs/SessionRestoreErrorDialog"; import StorageEvictedDialog from "./components/views/dialogs/StorageEvictedDialog"; import { setSentryUser } from "./sentry"; @@ -439,39 +436,6 @@ async function onFailedDelegatedAuthLogin(description: string | ReactNode, tryAg }); } -export function handleInvalidStoreError(e: InvalidStoreError): Promise | void { - if (e.reason === InvalidStoreError.TOGGLED_LAZY_LOADING) { - return Promise.resolve() - .then(() => { - const lazyLoadEnabled = e.value; - if (lazyLoadEnabled) { - return new Promise((resolve) => { - Modal.createDialog(LazyLoadingResyncDialog, { - onFinished: resolve, - }); - }); - } else { - // show warning about simultaneous use - // between LL/non-LL version on same host. - // as disabling LL when previously enabled - // is a strong indicator of this (/develop & /app) - return new Promise((resolve) => { - Modal.createDialog(LazyLoadingDisabledDialog, { - onFinished: resolve, - host: window.location.host, - }); - }); - } - }) - .then(() => { - return MatrixClientPeg.safeGet().store.deleteAllData(); - }) - .then(() => { - PlatformPeg.get()?.reload(); - }); - } -} - function registerAsGuest(hsUrl: string, isUrl?: string, defaultDeviceDisplayName?: string): Promise { logger.log(`Doing guest login on ${hsUrl}`); diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index b9ac2c71d72..d775059c319 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -27,7 +27,6 @@ import { SyncStateData, SyncState, } from "matrix-js-sdk/src/matrix"; -import { InvalidStoreError } from "matrix-js-sdk/src/errors"; import { defer, IDeferred, QueryDict } from "matrix-js-sdk/src/utils"; import { logger } from "matrix-js-sdk/src/logger"; import { throttle } from "lodash"; @@ -1484,9 +1483,6 @@ export default class MatrixChat extends React.PureComponent { cli.on(ClientEvent.Sync, (state: SyncState, prevState: SyncState | null, data?: SyncStateData) => { if (state === SyncState.Error || state === SyncState.Reconnecting) { - if (data?.error instanceof InvalidStoreError) { - Lifecycle.handleInvalidStoreError(data.error); - } this.setState({ syncError: data?.error ?? null }); } else if (this.state.syncError) { this.setState({ syncError: null }); @@ -2018,14 +2014,10 @@ export default class MatrixChat extends React.PureComponent { /> ); } else if (this.state.view === Views.LOGGED_IN) { - // store errors stop the client syncing and require user intervention, so we'll - // be showing a dialog. Don't show anything else. - const isStoreError = this.state.syncError && this.state.syncError instanceof InvalidStoreError; - // `ready` and `view==LOGGED_IN` may be set before `page_type` (because the // latter is set via the dispatcher). If we don't yet have a `page_type`, // keep showing the spinner for now. - if (this.state.ready && this.state.page_type && !isStoreError) { + if (this.state.ready && this.state.page_type) { /* for now, we stuff the entirety of our props and state into the LoggedInView. * we should go through and figure out what we actually need to pass down, as well * as using something like redux to avoid having a billion bits of state kicking around. @@ -2042,12 +2034,11 @@ export default class MatrixChat extends React.PureComponent { ); } else { // we think we are logged in, but are still waiting for the /sync to complete - // Suppress `InvalidStoreError`s here, since they have their own error dialog. view = ( ); } diff --git a/src/components/views/dialogs/LazyLoadingDisabledDialog.tsx b/src/components/views/dialogs/LazyLoadingDisabledDialog.tsx deleted file mode 100644 index 1e90b91b455..00000000000 --- a/src/components/views/dialogs/LazyLoadingDisabledDialog.tsx +++ /dev/null @@ -1,55 +0,0 @@ -/* -Copyright 2018 New Vector Ltd -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 QuestionDialog from "./QuestionDialog"; -import { _t } from "../../../languageHandler"; -import SdkConfig from "../../../SdkConfig"; - -interface IProps { - host: string; - onFinished(): void; -} - -const LazyLoadingDisabledDialog: React.FC = (props) => { - const brand = SdkConfig.get().brand; - const description1 = _t("lazy_loading|disabled_description1", { - brand, - host: props.host, - }); - const description2 = _t("lazy_loading|disabled_description2", { - brand, - }); - - return ( - -

{description1}

-

{description2}

- - } - button={_t("lazy_loading|disabled_action")} - onFinished={props.onFinished} - /> - ); -}; - -export default LazyLoadingDisabledDialog; diff --git a/src/components/views/dialogs/LazyLoadingResyncDialog.tsx b/src/components/views/dialogs/LazyLoadingResyncDialog.tsx deleted file mode 100644 index 54779bda4c6..00000000000 --- a/src/components/views/dialogs/LazyLoadingResyncDialog.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* -Copyright 2018 New Vector Ltd -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 QuestionDialog from "./QuestionDialog"; -import { _t } from "../../../languageHandler"; -import SdkConfig from "../../../SdkConfig"; - -interface IProps { - onFinished(): void; -} - -const LazyLoadingResyncDialog: React.FC = (props) => { - const brand = SdkConfig.get().brand; - const description = _t("lazy_loading|resync_description", { brand }); - - return ( - {description}} - button={_t("action|ok")} - onFinished={props.onFinished} - /> - ); -}; - -export default LazyLoadingResyncDialog; From c1ac46fc5fc49576b13ced3a1d69405364bfd705 Mon Sep 17 00:00:00 2001 From: David Langley Date: Thu, 21 Mar 2024 16:54:15 +0000 Subject: [PATCH 2/2] remove strings --- src/i18n/strings/en_EN.json | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index 0768dfb9de0..3b39cfea042 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -1511,14 +1511,6 @@ "view_rules": "View rules" }, "language_dropdown_label": "Language Dropdown", - "lazy_loading": { - "disabled_action": "Clear cache and resync", - "disabled_description1": "You've previously used %(brand)s on %(host)s with lazy loading of members enabled. In this version lazy loading is disabled. As the local cache is not compatible between these two settings, %(brand)s needs to resync your account.", - "disabled_description2": "If the other version of %(brand)s is still open in another tab, please close it as using %(brand)s on the same host with both lazy loading enabled and disabled simultaneously will cause issues.", - "disabled_title": "Incompatible local cache", - "resync_description": "%(brand)s now uses 3-5x less memory, by only loading information about other users when needed. Please wait whilst we resynchronise with the server!", - "resync_title": "Updating %(brand)s" - }, "leave_room_dialog": { "last_person_warning": "You are the only person here. If you leave, no one will be able to join in the future, including you.", "leave_room_question": "Are you sure you want to leave the room '%(roomName)s'?",