From e7e7331558d59e0a689df03805d65f8880886f5a Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 6 Dec 2024 15:10:04 +0000 Subject: [PATCH 01/20] Factor out crypto setup process into a store To make components pure and avoid react 18 dev mode problems due to components making requests when mounted. --- src/@types/global.d.ts | 2 + src/components/structures/MatrixChat.tsx | 16 +- src/components/structures/auth/E2eSetup.tsx | 11 +- .../security/InitialCryptoSetupDialog.tsx | 54 ++----- src/stores/InitialCryptoSetupStore.ts | 138 ++++++++++++++++++ src/stores/SetupEncryptionStore.ts | 5 + 6 files changed, 165 insertions(+), 61 deletions(-) create mode 100644 src/stores/InitialCryptoSetupStore.ts diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index be36c5b689..f921cd291f 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -44,6 +44,7 @@ import { IConfigOptions } from "../IConfigOptions"; import { MatrixDispatcher } from "../dispatcher/dispatcher"; import { DeepReadonly } from "./common"; import MatrixChat from "../components/structures/MatrixChat"; +import { InitialCryptoSetupStore } from "../stores/InitialCryptoSetupStore"; /* eslint-disable @typescript-eslint/naming-convention */ @@ -117,6 +118,7 @@ declare global { mxPerformanceEntryNames: any; mxUIStore: UIStore; mxSetupEncryptionStore?: SetupEncryptionStore; + mxInitialCryptoStore?: InitialCryptoSetupStore; mxRoomScrollStateStore?: RoomScrollStateStore; mxActiveWidgetStore?: ActiveWidgetStore; mxOnRecaptchaLoaded?: () => void; diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 548dbff983..ee120c430a 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -132,6 +132,7 @@ import { SessionLockStolenView } from "./auth/SessionLockStolenView"; import { ConfirmSessionLockTheftView } from "./auth/ConfirmSessionLockTheftView"; import { LoginSplashView } from "./auth/LoginSplashView"; import { cleanUpDraftsIfRequired } from "../../DraftCleaner"; +import { InitialCryptoSetupStore } from "../../stores/InitialCryptoSetupStore"; // legacy export export { default as Views } from "../../Views"; @@ -428,6 +429,12 @@ export default class MatrixChat extends React.PureComponent { !(await shouldSkipSetupEncryption(cli)) ) { // if cross-signing is not yet set up, do so now if possible. + InitialCryptoSetupStore.sharedInstance().startInitialCryptoSetup( + cli, + Boolean(this.tokenLogin), + this.stores, + this.onCompleteSecurityE2eSetupFinished, + ); this.setStateForNewView({ view: Views.E2E_SETUP }); } else { this.onLoggedIn(); @@ -2073,14 +2080,7 @@ export default class MatrixChat extends React.PureComponent { } else if (this.state.view === Views.COMPLETE_SECURITY) { view = ; } else if (this.state.view === Views.E2E_SETUP) { - view = ( - - ); + view = ; } else if (this.state.view === Views.LOGGED_IN) { // `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`, diff --git a/src/components/structures/auth/E2eSetup.tsx b/src/components/structures/auth/E2eSetup.tsx index 265905db10..3b064d6134 100644 --- a/src/components/structures/auth/E2eSetup.tsx +++ b/src/components/structures/auth/E2eSetup.tsx @@ -7,17 +7,13 @@ Please see LICENSE files in the repository root for full details. */ import React from "react"; -import { MatrixClient } from "matrix-js-sdk/src/matrix"; import AuthPage from "../../views/auth/AuthPage"; import CompleteSecurityBody from "../../views/auth/CompleteSecurityBody"; import { InitialCryptoSetupDialog } from "../../views/dialogs/security/InitialCryptoSetupDialog"; interface IProps { - matrixClient: MatrixClient; onFinished: () => void; - accountPassword?: string; - tokenLogin: boolean; } export default class E2eSetup extends React.Component { @@ -25,12 +21,7 @@ export default class E2eSetup extends React.Component { return ( - + ); diff --git a/src/components/views/dialogs/security/InitialCryptoSetupDialog.tsx b/src/components/views/dialogs/security/InitialCryptoSetupDialog.tsx index 4ee69f17a4..22635662ce 100644 --- a/src/components/views/dialogs/security/InitialCryptoSetupDialog.tsx +++ b/src/components/views/dialogs/security/InitialCryptoSetupDialog.tsx @@ -7,20 +7,15 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ -import React, { useCallback, useEffect, useState } from "react"; -import { logger } from "matrix-js-sdk/src/logger"; -import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import React, { useCallback } from "react"; import { _t } from "../../../../languageHandler"; import DialogButtons from "../../elements/DialogButtons"; import BaseDialog from "../BaseDialog"; import Spinner from "../../elements/Spinner"; -import { createCrossSigning } from "../../../../CreateCrossSigning"; +import { InitialCryptoSetupStore, useInitialCryptoSetupStatus } from "../../../../stores/InitialCryptoSetupStore"; interface Props { - matrixClient: MatrixClient; - accountPassword?: string; - tokenLogin: boolean; onFinished: (success?: boolean) => void; } @@ -29,54 +24,27 @@ interface Props { * In most cases, only a spinner is shown, but for more * complex auth like SSO, the user may need to complete some steps to proceed. */ -export const InitialCryptoSetupDialog: React.FC = ({ - matrixClient, - accountPassword, - tokenLogin, - onFinished, -}) => { - const [error, setError] = useState(false); +export const InitialCryptoSetupDialog: React.FC = ({ onFinished }) => { + const onRetryClick = useCallback(() => { + InitialCryptoSetupStore.sharedInstance().retry(); + }, []); - const doSetup = useCallback(async () => { - const cryptoApi = matrixClient.getCrypto(); - if (!cryptoApi) return; - - setError(false); - - try { - await createCrossSigning(matrixClient, tokenLogin, accountPassword); - - onFinished(true); - } catch (e) { - if (tokenLogin) { - // ignore any failures, we are relying on grace period here - onFinished(false); - return; - } - - setError(true); - logger.error("Error bootstrapping cross-signing", e); - } - }, [matrixClient, tokenLogin, accountPassword, onFinished]); - - const onCancel = useCallback(() => { + const onCancelClick = useCallback(() => { onFinished(false); }, [onFinished]); - useEffect(() => { - doSetup(); - }, [doSetup]); + const status = useInitialCryptoSetupStatus(InitialCryptoSetupStore.sharedInstance()); let content; - if (error) { + if (status === "error") { content = (

{_t("encryption|unable_to_setup_keys_error")}

diff --git a/src/stores/InitialCryptoSetupStore.ts b/src/stores/InitialCryptoSetupStore.ts new file mode 100644 index 0000000000..24b2776fd7 --- /dev/null +++ b/src/stores/InitialCryptoSetupStore.ts @@ -0,0 +1,138 @@ +/* +Copyright 2024 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only +Please see LICENSE files in the repository root for full details. +*/ + +import EventEmitter from "events"; +import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import { logger } from "matrix-js-sdk/src/logger"; +import { useEffect, useState } from "react"; + +import { createCrossSigning } from "../CreateCrossSigning"; +import { SdkContextClass } from "../contexts/SDKContext"; + +type Status = "in_progress" | "complete" | "error" | undefined; + +export const useInitialCryptoSetupStatus = (store: InitialCryptoSetupStore): Status => { + const [status, setStatus] = useState(store.getStatus()); + + useEffect(() => { + const update = (): void => { + setStatus(store.getStatus()); + }; + + store.on("update", update); + + return () => { + store.off("update", update); + }; + }, [store]); + + return status; +}; + +/** + * Logic for setting up crypto state that's done immediately after + * a user registers. Should be transparent to the user, not requiring + * interaction in most cases. + * As distinct from SetupEncryptionStore which is for setting up + * 4S or verifying the device, will always require interaction + * from the user in some form. + */ +export class InitialCryptoSetupStore extends EventEmitter { + private status: Status = undefined; + + private client?: MatrixClient; + private isTokenLogin?: boolean; + private stores?: SdkContextClass; + private onFinished?: (success: boolean) => void; + + public static sharedInstance(): InitialCryptoSetupStore { + if (!window.mxInitialCryptoStore) window.mxInitialCryptoStore = new InitialCryptoSetupStore(); + return window.mxInitialCryptoStore; + } + + public getStatus(): Status { + return this.status; + } + + /** + * Start the initial crypto setup process. + * + * @param {MatrixClient} client The client to use for the setup + * @param {boolean} isTokenLogin True if the user logged in via a token login, otherwise false + * @param {SdkContextClass} stores The stores to use for the setup + */ + public startInitialCryptoSetup( + client: MatrixClient, + isTokenLogin: boolean, + stores: SdkContextClass, + onFinished: (success: boolean) => void, + ): void { + this.client = client; + this.isTokenLogin = isTokenLogin; + this.stores = stores; + this.onFinished = onFinished; + + this.doSetup().catch(() => logger.error("Initial crypto setup failed")); + } + + /** + * Retry the initial crypto setup process. + * + * If no crypto setup is currently in process, this will return false. + * + * @returns {boolean} True if a retry was initiated, otherwise false + */ + public retry(): boolean { + if (this.client === undefined || this.isTokenLogin === undefined || this.stores == undefined) return false; + + this.doSetup().catch(() => logger.error("Initial crypto setup failed")); + + return true; + } + + private reset(): void { + this.client = undefined; + this.isTokenLogin = undefined; + this.stores = undefined; + } + + private async doSetup(): Promise { + if (this.client === undefined || this.isTokenLogin === undefined || this.stores == undefined) { + throw new Error("No setup is in progress"); + } + + const cryptoApi = this.client.getCrypto(); + if (!cryptoApi) throw new Error("No crypto module found!"); + + this.status = "in_progress"; + this.emit("update"); + + try { + await createCrossSigning(this.client, this.isTokenLogin, this.stores.accountPasswordStore.getPassword()); + + this.reset(); + + this.status = "complete"; + this.emit("update"); + this.onFinished?.(true); + } catch (e) { + if (this.isTokenLogin) { + // ignore any failures, we are relying on grace period here + this.reset(); + + this.status = "complete"; + this.emit("update"); + this.onFinished?.(true); + + return; + } + logger.error("Error bootstrapping cross-signing", e); + this.status = "error"; + this.emit("update"); + } + } +} diff --git a/src/stores/SetupEncryptionStore.ts b/src/stores/SetupEncryptionStore.ts index 70c721b1ca..a13ba26f72 100644 --- a/src/stores/SetupEncryptionStore.ts +++ b/src/stores/SetupEncryptionStore.ts @@ -33,6 +33,11 @@ export enum Phase { ConfirmReset = 6, } +/** + * Logic for setting up 4S and/or verifying the user's device: a process requiring + * ongoing interaction with the user, as distinct from InitialCryptoSetupStore which + * a (usually) non-interactive process that happens immediately after registration. + */ export class SetupEncryptionStore extends EventEmitter { private started?: boolean; public phase?: Phase; From 2ce127c5a898fc4fb142aa55118838a1007c2a97 Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 6 Dec 2024 15:28:12 +0000 Subject: [PATCH 02/20] fix test --- .../InitialCryptoSetupDialog-test.tsx | 114 ++++-------------- 1 file changed, 22 insertions(+), 92 deletions(-) diff --git a/test/components/views/dialogs/security/InitialCryptoSetupDialog-test.tsx b/test/components/views/dialogs/security/InitialCryptoSetupDialog-test.tsx index 4d3d495a38..a589b55289 100644 --- a/test/components/views/dialogs/security/InitialCryptoSetupDialog-test.tsx +++ b/test/components/views/dialogs/security/InitialCryptoSetupDialog-test.tsx @@ -7,31 +7,22 @@ Please see LICENSE files in the repository root for full details. */ import React from "react"; -import { render, screen, waitFor } from "jest-matrix-react"; -import { mocked } from "jest-mock"; -import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import { render, screen } from "jest-matrix-react"; +import userEvent from "@testing-library/user-event"; -import { createCrossSigning } from "../../../../../src/CreateCrossSigning"; import { InitialCryptoSetupDialog } from "../../../../../src/components/views/dialogs/security/InitialCryptoSetupDialog"; -import { createTestClient } from "../../../../test-utils"; - -jest.mock("../../../../../src/CreateCrossSigning", () => ({ - createCrossSigning: jest.fn(), -})); +import { InitialCryptoSetupStore } from "../../../../../src/stores/InitialCryptoSetupStore"; describe("InitialCryptoSetupDialog", () => { - let client: MatrixClient; - let createCrossSigningResolve: () => void; - let createCrossSigningReject: (e: Error) => void; + const storeMock = { + getStatus: jest.fn(), + retry: jest.fn(), + on: jest.fn(), + off: jest.fn(), + }; beforeEach(() => { - client = createTestClient(); - mocked(createCrossSigning).mockImplementation(() => { - return new Promise((resolve, reject) => { - createCrossSigningResolve = resolve; - createCrossSigningReject = reject; - }); - }); + jest.spyOn(InitialCryptoSetupStore, "sharedInstance").mockReturnValue(storeMock as any); }); afterEach(() => { @@ -39,93 +30,32 @@ describe("InitialCryptoSetupDialog", () => { jest.restoreAllMocks(); }); - it("should call createCrossSigning and show a spinner while it runs", async () => { + it("should show a spinner while the setup is in progress", async () => { const onFinished = jest.fn(); - render( - , - ); + storeMock.getStatus.mockReturnValue("in_progress"); + + render(); - expect(createCrossSigning).toHaveBeenCalledWith(client, false, "hunter2"); expect(screen.getByTestId("spinner")).toBeInTheDocument(); - - createCrossSigningResolve!(); - - await waitFor(() => expect(onFinished).toHaveBeenCalledWith(true)); }); - it("should display an error if createCrossSigning fails", async () => { - render( - , - ); + it("should display an error if setup has failed", async () => { + storeMock.getStatus.mockReturnValue("error"); - createCrossSigningReject!(new Error("generic error message")); + render(); await expect(await screen.findByRole("button", { name: "Retry" })).toBeInTheDocument(); }); - it("ignores failures when tokenLogin is true", async () => { + it("calls retry when retry button pressed", async () => { const onFinished = jest.fn(); + storeMock.getStatus.mockReturnValue("error"); - render( - , - ); + render(); - createCrossSigningReject!(new Error("generic error message")); + await userEvent.click(await screen.findByRole("button", { name: "Retry" })); - await waitFor(() => expect(onFinished).toHaveBeenCalledWith(false)); - }); - - it("cancels the dialog when the cancel button is clicked", async () => { - const onFinished = jest.fn(); - - render( - , - ); - - createCrossSigningReject!(new Error("generic error message")); - - const cancelButton = await screen.findByRole("button", { name: "Cancel" }); - cancelButton.click(); - - expect(onFinished).toHaveBeenCalledWith(false); - }); - - it("should retry when the retry button is clicked", async () => { - render( - , - ); - - createCrossSigningReject!(new Error("generic error message")); - - const retryButton = await screen.findByRole("button", { name: "Retry" }); - retryButton.click(); - - expect(createCrossSigning).toHaveBeenCalledTimes(2); + expect(storeMock.retry).toHaveBeenCalled(); }); }); From 1c8d7d87c23e91d84e8f7053d623309079f6b8df Mon Sep 17 00:00:00 2001 From: David Baker Date: Fri, 6 Dec 2024 16:14:46 +0000 Subject: [PATCH 03/20] test for the store --- .../stores/InitialCryptoSetupStore-test.ts | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 test/unit-tests/stores/InitialCryptoSetupStore-test.ts diff --git a/test/unit-tests/stores/InitialCryptoSetupStore-test.ts b/test/unit-tests/stores/InitialCryptoSetupStore-test.ts new file mode 100644 index 0000000000..64b81bade2 --- /dev/null +++ b/test/unit-tests/stores/InitialCryptoSetupStore-test.ts @@ -0,0 +1,85 @@ +/* +Copyright 2024 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only +Please see LICENSE files in the repository root for full details. +*/ + +import { mocked } from "jest-mock"; +import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import { waitFor } from "jest-matrix-react"; + +import { createCrossSigning } from "../../../src/CreateCrossSigning"; +import { InitialCryptoSetupStore } from "../../../src/stores/InitialCryptoSetupStore"; +import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { createTestClient } from "../../test-utils"; +import { AccountPasswordStore } from "../../../src/stores/AccountPasswordStore"; + +jest.mock("../../../src/CreateCrossSigning", () => ({ + createCrossSigning: jest.fn(), +})); + +describe("InitialCryptoSetupStore", () => { + let testStore: InitialCryptoSetupStore; + let client: MatrixClient; + let stores: SdkContextClass; + + let createCrossSigningResolve: () => void; + let createCrossSigningReject: (e: Error) => void; + + beforeEach(() => { + testStore = new InitialCryptoSetupStore(); + client = createTestClient(); + stores = { + accountPasswordStore: { + getPassword: jest.fn(), + } as unknown as AccountPasswordStore, + } as unknown as SdkContextClass; + + mocked(createCrossSigning).mockImplementation(() => { + return new Promise((resolve, reject) => { + createCrossSigningResolve = resolve; + createCrossSigningReject = reject; + }); + }); + }); + + it("should call createCrossSigning when startInitialCryptoSetup is called", async () => { + testStore.startInitialCryptoSetup(client, false, stores, jest.fn()); + + await waitFor(() => expect(createCrossSigning).toHaveBeenCalled()); + }); + + it("emits an update event when createCrossSigning resolves", async () => { + const updateSpy = jest.fn(); + testStore.on("update", updateSpy); + + testStore.startInitialCryptoSetup(client, false, stores, jest.fn()); + createCrossSigningResolve(); + + await waitFor(() => expect(updateSpy).toHaveBeenCalled()); + expect(testStore.getStatus()).toBe("complete"); + }); + + it("emits an update event when createCrossSigning rejects", async () => { + const updateSpy = jest.fn(); + testStore.on("update", updateSpy); + + testStore.startInitialCryptoSetup(client, false, stores, jest.fn()); + createCrossSigningReject(new Error("Test error")); + + await waitFor(() => expect(updateSpy).toHaveBeenCalled()); + expect(testStore.getStatus()).toBe("error"); + }); + + it("should ignore failures if tokenLogin is true", async () => { + const updateSpy = jest.fn(); + testStore.on("update", updateSpy); + + testStore.startInitialCryptoSetup(client, true, stores, jest.fn()); + createCrossSigningReject(new Error("Test error")); + + await waitFor(() => expect(updateSpy).toHaveBeenCalled()); + expect(testStore.getStatus()).toBe("complete"); + }); +}); From ce194376a31ad1b9465aacb0bb16c7f3f9779bda Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 9 Dec 2024 10:27:43 +0000 Subject: [PATCH 04/20] Add comment --- src/stores/InitialCryptoSetupStore.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/stores/InitialCryptoSetupStore.ts b/src/stores/InitialCryptoSetupStore.ts index 24b2776fd7..0c2e49f5ca 100644 --- a/src/stores/InitialCryptoSetupStore.ts +++ b/src/stores/InitialCryptoSetupStore.ts @@ -76,6 +76,8 @@ export class InitialCryptoSetupStore extends EventEmitter { this.stores = stores; this.onFinished = onFinished; + // We just start this process: it's progress is tracked by the events rather + // than returning a promise, so we don't bother. this.doSetup().catch(() => logger.error("Initial crypto setup failed")); } From b2601b172868bfabfd45c7d926ee7217503f286d Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 9 Dec 2024 13:58:31 +0000 Subject: [PATCH 05/20] Enable key backup by default When we set up cross signing, so the key backup key will be stored locally along with the cross signing keys until the user sets up recovery (4s). This will mean that a user can restore their backup if they log in on a new device as long as they verify with the one they registered on. Replaces https://github.com/element-hq/element-web/pull/28267 --- src/CreateCrossSigning.ts | 8 +++--- src/DeviceListener.ts | 28 ++++++++++++------- src/i18n/strings/en_EN.json | 3 ++ src/stores/InitialCryptoSetupStore.ts | 5 ++++ src/toasts/SetupEncryptionToast.ts | 24 ++++++++++++++-- test/unit-tests/DeviceListener-test.ts | 4 +-- .../components/structures/MatrixChat-test.tsx | 1 + .../toasts/SetupEncryptionToast-test.tsx | 24 ++++++++++++++++ 8 files changed, 78 insertions(+), 19 deletions(-) create mode 100644 test/unit-tests/toasts/SetupEncryptionToast-test.tsx diff --git a/src/CreateCrossSigning.ts b/src/CreateCrossSigning.ts index e67e030f60..8c2d4488cf 100644 --- a/src/CreateCrossSigning.ts +++ b/src/CreateCrossSigning.ts @@ -23,11 +23,11 @@ import InteractiveAuthDialog from "./components/views/dialogs/InteractiveAuthDia async function canUploadKeysWithPasswordOnly(cli: MatrixClient): Promise { try { await cli.uploadDeviceSigningKeys(undefined, {} as CrossSigningKeys); - // We should never get here: the server should always require - // UI auth to upload device signing keys. If we do, we upload - // no keys which would be a no-op. + // If we get here, it's because the server is allowing us to upload keys without + // auth the first time due to MSC3967. Therefore, yes, we can upload keys + // (with or without password, technically, but that's fine). logger.log("uploadDeviceSigningKeys unexpectedly succeeded without UI auth!"); - return false; + return true; } catch (error) { if (!(error instanceof MatrixError) || !error.data || !error.data.flows) { logger.log("uploadDeviceSigningKeys advertised no flows!"); diff --git a/src/DeviceListener.ts b/src/DeviceListener.ts index 84d83827da..e34af95962 100644 --- a/src/DeviceListener.ts +++ b/src/DeviceListener.ts @@ -295,21 +295,29 @@ export default class DeviceListener { await crypto.getUserDeviceInfo([cli.getSafeUserId()]); // cross signing isn't enabled - nag to enable it - // There are 2 different toasts for: + // There are 3 different toasts for: if (!(await crypto.getCrossSigningKeyId()) && (await crypto.userHasCrossSigningKeys())) { - // Cross-signing on account but this device doesn't trust the master key (verify this session) + // Toast 1. Cross-signing on account but this device doesn't trust the master key (verify this session) showSetupEncryptionToast(SetupKind.VERIFY_THIS_SESSION); this.checkKeyBackupStatus(); } else { - // No cross-signing or key backup on account (set up encryption) - await cli.waitForClientWellKnown(); - if (isSecureBackupRequired(cli) && isLoggedIn()) { - // If we're meant to set up, and Secure Backup is required, - // trigger the flow directly without a toast once logged in. - hideSetupEncryptionToast(); - accessSecretStorage(); + const backupInfo = await this.getKeyBackupInfo(); + if (backupInfo) { + // Toast 2: Key backup is enabled but recovery (4S) is not set up: prompt user to set up recovery. + // Since we now enable key backup at registration time, this will be the common case for + // new users. + showSetupEncryptionToast(SetupKind.SET_UP_RECOVERY); } else { - showSetupEncryptionToast(SetupKind.SET_UP_ENCRYPTION); + // Toast 3: No cross-signing or key backup on account (set up encryption) + await cli.waitForClientWellKnown(); + if (isSecureBackupRequired(cli) && isLoggedIn()) { + // If we're meant to set up, and Secure Backup is required, + // trigger the flow directly without a toast once logged in. + hideSetupEncryptionToast(); + accessSecretStorage(); + } else { + showSetupEncryptionToast(SetupKind.SET_UP_ENCRYPTION); + } } } } diff --git a/src/i18n/strings/en_EN.json b/src/i18n/strings/en_EN.json index e9ac73b48b..f3c514fca3 100644 --- a/src/i18n/strings/en_EN.json +++ b/src/i18n/strings/en_EN.json @@ -914,6 +914,9 @@ "warning": "If you didn't remove the recovery method, an attacker may be trying to access your account. Change your account password and set a new recovery method immediately in Settings." }, "reset_all_button": "Forgotten or lost all recovery methods? Reset all", + "set_up_recovery": "Set up recovery", + "set_up_recovery_later": "Not now", + "set_up_recovery_toast_description": "Generate a recovery key that can be used to restore your encrypted message history in case you lose access to your devices.", "set_up_toast_description": "Safeguard against losing access to encrypted messages & data", "set_up_toast_title": "Set up Secure Backup", "setup_secure_backup": { diff --git a/src/stores/InitialCryptoSetupStore.ts b/src/stores/InitialCryptoSetupStore.ts index 0c2e49f5ca..dd6b1f0461 100644 --- a/src/stores/InitialCryptoSetupStore.ts +++ b/src/stores/InitialCryptoSetupStore.ts @@ -116,6 +116,11 @@ export class InitialCryptoSetupStore extends EventEmitter { try { await createCrossSigning(this.client, this.isTokenLogin, this.stores.accountPasswordStore.getPassword()); + const backupInfo = await cryptoApi.getKeyBackupInfo(); + if (backupInfo === null) { + await cryptoApi.resetKeyBackup(); + } + this.reset(); this.status = "complete"; diff --git a/src/toasts/SetupEncryptionToast.ts b/src/toasts/SetupEncryptionToast.ts index 0dd54bb18f..1d6cbe7490 100644 --- a/src/toasts/SetupEncryptionToast.ts +++ b/src/toasts/SetupEncryptionToast.ts @@ -23,15 +23,19 @@ const getTitle = (kind: Kind): string => { switch (kind) { case Kind.SET_UP_ENCRYPTION: return _t("encryption|set_up_toast_title"); + case Kind.SET_UP_RECOVERY: + return _t("encryption|set_up_recovery"); case Kind.VERIFY_THIS_SESSION: return _t("encryption|verify_toast_title"); } }; -const getIcon = (kind: Kind): string => { +const getIcon = (kind: Kind): string | undefined => { switch (kind) { case Kind.SET_UP_ENCRYPTION: return "secure_backup"; + case Kind.SET_UP_RECOVERY: + return undefined; case Kind.VERIFY_THIS_SESSION: return "verification_warning"; } @@ -41,15 +45,29 @@ const getSetupCaption = (kind: Kind): string => { switch (kind) { case Kind.SET_UP_ENCRYPTION: return _t("action|continue"); + case Kind.SET_UP_RECOVERY: + return _t("action|continue"); case Kind.VERIFY_THIS_SESSION: return _t("action|verify"); } }; +const getSecondaryButtonLabel = (kind: Kind): string => { + switch (kind) { + case Kind.SET_UP_RECOVERY: + return _t("encryption|set_up_recovery_later"); + case Kind.SET_UP_ENCRYPTION: + case Kind.VERIFY_THIS_SESSION: + return _t("encryption|verification|unverified_sessions_toast_reject"); + } +}; + const getDescription = (kind: Kind): string => { switch (kind) { case Kind.SET_UP_ENCRYPTION: return _t("encryption|set_up_toast_description"); + case Kind.SET_UP_RECOVERY: + return _t("encryption|set_up_recovery_toast_description"); case Kind.VERIFY_THIS_SESSION: return _t("encryption|verify_toast_description"); } @@ -57,6 +75,7 @@ const getDescription = (kind: Kind): string => { export enum Kind { SET_UP_ENCRYPTION = "set_up_encryption", + SET_UP_RECOVERY = "set_up_recovery", VERIFY_THIS_SESSION = "verify_this_session", } @@ -101,9 +120,8 @@ export const showToast = (kind: Kind): void => { description: getDescription(kind), primaryLabel: getSetupCaption(kind), onPrimaryClick: onAccept, - secondaryLabel: _t("encryption|verification|unverified_sessions_toast_reject"), + secondaryLabel: getSecondaryButtonLabel(kind), onSecondaryClick: onReject, - destructive: "secondary", }, component: GenericToast, priority: kind === Kind.VERIFY_THIS_SESSION ? 95 : 40, diff --git a/test/unit-tests/DeviceListener-test.ts b/test/unit-tests/DeviceListener-test.ts index ad7f14e119..1c8fe1a1c7 100644 --- a/test/unit-tests/DeviceListener-test.ts +++ b/test/unit-tests/DeviceListener-test.ts @@ -352,13 +352,13 @@ describe("DeviceListener", () => { mockCrypto!.getCrossSigningKeyId.mockResolvedValue("abc"); }); - it("shows set up encryption toast when user has a key backup available", async () => { + it("shows set up recovery toast when user has a key backup available", async () => { // non falsy response mockCrypto.getKeyBackupInfo.mockResolvedValue({} as unknown as KeyBackupInfo); await createAndStart(); expect(SetupEncryptionToast.showToast).toHaveBeenCalledWith( - SetupEncryptionToast.Kind.SET_UP_ENCRYPTION, + SetupEncryptionToast.Kind.SET_UP_RECOVERY, ); }); }); diff --git a/test/unit-tests/components/structures/MatrixChat-test.tsx b/test/unit-tests/components/structures/MatrixChat-test.tsx index fd17ccf583..bc6bb0f9ff 100644 --- a/test/unit-tests/components/structures/MatrixChat-test.tsx +++ b/test/unit-tests/components/structures/MatrixChat-test.tsx @@ -1003,6 +1003,7 @@ describe("", () => { userHasCrossSigningKeys: jest.fn().mockResolvedValue(false), // This needs to not finish immediately because we need to test the screen appears bootstrapCrossSigning: jest.fn().mockImplementation(() => bootstrapDeferred.promise), + resetKeyBackup: jest.fn(), isEncryptionEnabledInRoom: jest.fn().mockResolvedValue(false), }; loginClient.getCrypto.mockReturnValue(mockCrypto as any); diff --git a/test/unit-tests/toasts/SetupEncryptionToast-test.tsx b/test/unit-tests/toasts/SetupEncryptionToast-test.tsx new file mode 100644 index 0000000000..5ce3fab9ae --- /dev/null +++ b/test/unit-tests/toasts/SetupEncryptionToast-test.tsx @@ -0,0 +1,24 @@ +/* +Copyright 2024 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only +Please see LICENSE files in the repository root for full details. +*/ + +import React from "react"; +import { render, screen } from "jest-matrix-react"; + +import ToastContainer from "../../../src/components/structures/ToastContainer"; +import { Kind, showToast } from "../../../src/toasts/SetupEncryptionToast"; + +describe("SetupEncryptionToast", () => { + beforeEach(() => { + render(); + }); + + it("should render the se up recovery toast", async () => { + showToast(Kind.SET_UP_RECOVERY); + + await expect(screen.findByText("Set up recovery")).resolves.toBeInTheDocument(); + }); +}); From cf0b5590754ddd719987904827ee38861ee0b78f Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 9 Dec 2024 14:18:25 +0000 Subject: [PATCH 06/20] Fix test --- test/unit-tests/components/structures/MatrixChat-test.tsx | 1 + 1 file changed, 1 insertion(+) diff --git a/test/unit-tests/components/structures/MatrixChat-test.tsx b/test/unit-tests/components/structures/MatrixChat-test.tsx index bc6bb0f9ff..0838bf33f0 100644 --- a/test/unit-tests/components/structures/MatrixChat-test.tsx +++ b/test/unit-tests/components/structures/MatrixChat-test.tsx @@ -1005,6 +1005,7 @@ describe("", () => { bootstrapCrossSigning: jest.fn().mockImplementation(() => bootstrapDeferred.promise), resetKeyBackup: jest.fn(), isEncryptionEnabledInRoom: jest.fn().mockResolvedValue(false), + getKeyBackupInfo: jest.fn().mockResolvedValue(null), }; loginClient.getCrypto.mockReturnValue(mockCrypto as any); }); From d14309f99bc80e4629b1e8f204af7a41218953e1 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 9 Dec 2024 14:48:31 +0000 Subject: [PATCH 07/20] Prompt user to set up 4S on logout --- src/components/views/dialogs/LogoutDialog.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/components/views/dialogs/LogoutDialog.tsx b/src/components/views/dialogs/LogoutDialog.tsx index 4731c593bc..ee16bb726f 100644 --- a/src/components/views/dialogs/LogoutDialog.tsx +++ b/src/components/views/dialogs/LogoutDialog.tsx @@ -38,6 +38,9 @@ enum BackupStatus { /** there is a backup on the server but we are not backing up to it */ SERVER_BACKUP_BUT_DISABLED, + /** Key backup is set up but recovery (4s) is not */ + BACKUP_NO_RECOVERY, + /** backup is not set up locally and there is no backup on the server */ NO_BACKUP, @@ -104,7 +107,11 @@ export default class LogoutDialog extends React.Component { } if ((await crypto.getActiveSessionBackupVersion()) !== null) { - this.setState({ backupStatus: BackupStatus.BACKUP_ACTIVE }); + if (await crypto.isSecretStorageReady()) { + this.setState({ backupStatus: BackupStatus.BACKUP_ACTIVE }); + } else { + this.setState({ backupStatus: BackupStatus.BACKUP_NO_RECOVERY }); + } return; } @@ -254,6 +261,7 @@ export default class LogoutDialog extends React.Component { case BackupStatus.NO_BACKUP: case BackupStatus.SERVER_BACKUP_BUT_DISABLED: case BackupStatus.ERROR: + case BackupStatus.BACKUP_NO_RECOVERY: return this.renderSetupBackupDialog(); } } From 905023d0e8faef689a0ad4462085aba6bb48a676 Mon Sep 17 00:00:00 2001 From: David Baker Date: Mon, 9 Dec 2024 15:01:28 +0000 Subject: [PATCH 08/20] Fix test --- .../components/views/dialogs/LogoutDialog-test.tsx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/test/unit-tests/components/views/dialogs/LogoutDialog-test.tsx b/test/unit-tests/components/views/dialogs/LogoutDialog-test.tsx index 0557e538d0..98f758ebbd 100644 --- a/test/unit-tests/components/views/dialogs/LogoutDialog-test.tsx +++ b/test/unit-tests/components/views/dialogs/LogoutDialog-test.tsx @@ -42,12 +42,20 @@ describe("LogoutDialog", () => { expect(rendered.container).toMatchSnapshot(); }); - it("shows a regular dialog if backups are working", async () => { + it("shows a regular dialog if backups and recovery are working", async () => { mockCrypto.getActiveSessionBackupVersion.mockResolvedValue("1"); + mockCrypto.isSecretStorageReady.mockResolvedValue(true); const rendered = renderComponent(); await rendered.findByText("Are you sure you want to sign out?"); }); + it("prompts user to set up recovery if backups are enabled but recovery isn't", async () => { + mockCrypto.getActiveSessionBackupVersion.mockResolvedValue("1"); + mockCrypto.isSecretStorageReady.mockResolvedValue(false); + const rendered = renderComponent(); + await rendered.findByText("You'll lose access to your encrypted messages"); + }); + it("Prompts user to connect backup if there is a backup on the server", async () => { mockCrypto.getKeyBackupInfo.mockResolvedValue({} as KeyBackupInfo); const rendered = renderComponent(); From 2b4000d47fd967583f7aa914b545069a3e5b15ae Mon Sep 17 00:00:00 2001 From: Hubert Chathi Date: Mon, 9 Dec 2024 16:02:29 -0500 Subject: [PATCH 09/20] Add delay in test to allow Alice to fetch Bob's device keys (#28668) * add delay in test to allow Alice to fetch Bob's device keys * wait until we see bob's device, rather than hard-coding a timeout * Fix comment Co-authored-by: Florian Duros * fix lint --------- Co-authored-by: Florian Duros --- playwright/e2e/crypto/user-verification.spec.ts | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/playwright/e2e/crypto/user-verification.spec.ts b/playwright/e2e/crypto/user-verification.spec.ts index 4c8d641e6f..bd3d859526 100644 --- a/playwright/e2e/crypto/user-verification.spec.ts +++ b/playwright/e2e/crypto/user-verification.spec.ts @@ -8,6 +8,7 @@ Please see LICENSE files in the repository root for full details. import { type Preset, type Visibility } from "matrix-js-sdk/src/matrix"; +import type { Page } from "@playwright/test"; import { test, expect } from "../../element-web-test"; import { doTwoWaySasVerification, awaitVerifier } from "./utils"; import { Client } from "../../pages/client"; @@ -38,6 +39,8 @@ test.describe("User verification", () => { toasts, room: { roomId: dmRoomId }, }) => { + await waitForDeviceKeys(page); + // once Alice has joined, Bob starts the verification const bobVerificationRequest = await bob.evaluateHandle( async (client, { dmRoomId, aliceCredentials }) => { @@ -87,6 +90,8 @@ test.describe("User verification", () => { toasts, room: { roomId: dmRoomId }, }) => { + await waitForDeviceKeys(page); + // once Alice has joined, Bob starts the verification const bobVerificationRequest = await bob.evaluateHandle( async (client, { dmRoomId, aliceCredentials }) => { @@ -149,3 +154,15 @@ async function createDMRoom(client: Client, userId: string): Promise { ], }); } + +/** + * Wait until we get the other user's device keys. + * In newer rust-crypto versions, the verification request will be ignored if we + * don't have the sender's device keys. + */ +async function waitForDeviceKeys(page: Page): Promise { + await expect(page.getByRole("button", { name: "Avatar" })).toBeVisible(); + const avatar = await page.getByRole("button", { name: "Avatar" }); + await avatar.click(); + await expect(page.getByText("1 session")).toBeVisible(); +} From a4e8bb3f9ad823ef0197c1b019f0ecc9951a3458 Mon Sep 17 00:00:00 2001 From: ElementRobot Date: Tue, 10 Dec 2024 06:17:13 +0000 Subject: [PATCH 10/20] [create-pull-request] automated change (#28696) Co-authored-by: t3chguy <2403652+t3chguy@users.noreply.github.com> --- playwright/plugins/homeserver/synapse/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/playwright/plugins/homeserver/synapse/index.ts b/playwright/plugins/homeserver/synapse/index.ts index 1922058201..078ca2848f 100644 --- a/playwright/plugins/homeserver/synapse/index.ts +++ b/playwright/plugins/homeserver/synapse/index.ts @@ -20,7 +20,7 @@ import { randB64Bytes } from "../../utils/rand"; // Docker tag to use for synapse docker image. // We target a specific digest as every now and then a Synapse update will break our CI. // This digest is updated by the playwright-image-updates.yaml workflow periodically. -const DOCKER_TAG = "develop@sha256:6ff2b43b7412eb4155c0147441421b31fc4b31acd56be82cf27daf172ababa4d"; +const DOCKER_TAG = "develop@sha256:6b82dba715fa7ae641010b4cc5e71edaeb9cc05a50ac5b9e4ff09afa9cd2a80d"; async function cfgDirFromTemplate(opts: StartHomeserverOpts): Promise> { const templateDir = path.join(__dirname, "templates", opts.template); From 6b7c94905f06f5eae307ae2469e13f0eeba82105 Mon Sep 17 00:00:00 2001 From: Hugh Nimmo-Smith Date: Tue, 10 Dec 2024 12:05:30 +0000 Subject: [PATCH 11/20] Allow trusted Element Call widget to send and receive media encryption key to-device messages (#28316) --- src/stores/widgets/StopGapWidgetDriver.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/stores/widgets/StopGapWidgetDriver.ts b/src/stores/widgets/StopGapWidgetDriver.ts index 5bc2ac7fc0..de7a71fa80 100644 --- a/src/stores/widgets/StopGapWidgetDriver.ts +++ b/src/stores/widgets/StopGapWidgetDriver.ts @@ -194,6 +194,7 @@ export class StopGapWidgetDriver extends WidgetDriver { EventType.CallSDPStreamMetadataChanged, EventType.CallSDPStreamMetadataChangedPrefix, EventType.CallReplaces, + EventType.CallEncryptionKeysPrefix, ]; for (const eventType of sendRecvToDevice) { this.allowedCapabilities.add( From e835cab1398979cbd0c3aba93b5e08095dd36cb0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 10 Dec 2024 17:20:18 +0000 Subject: [PATCH 12/20] Update all non-major dependencies (#28703) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 279 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 181 insertions(+), 100 deletions(-) diff --git a/package.json b/package.json index 5976379ab2..6ab08023e8 100644 --- a/package.json +++ b/package.json @@ -269,7 +269,7 @@ "postcss-preset-env": "^10.0.0", "postcss-scss": "^4.0.4", "postcss-simple-vars": "^7.0.1", - "prettier": "3.4.1", + "prettier": "3.4.2", "process": "^0.11.10", "raw-loader": "^4.0.2", "rimraf": "^6.0.0", diff --git a/yarn.lock b/yarn.lock index aa431c0204..759939eca9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -34,7 +34,7 @@ dependencies: axe-core "~4.10.2" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.25.9", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.26.2.tgz#4b5fab97d33338eff916235055f0ebc21e573a85" integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ== @@ -51,11 +51,16 @@ "@babel/highlight" "^7.25.7" picocolors "^1.0.0" -"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.25.9", "@babel/compat-data@^7.26.0": +"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.0": version "7.26.2" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.2.tgz#278b6b13664557de95b8f35b90d96785850bb56e" integrity sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg== +"@babel/compat-data@^7.25.9": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.26.3.tgz#99488264a56b2aded63983abd6a417f03b92ed02" + integrity sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g== + "@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.10", "@babel/core@^7.12.3", "@babel/core@^7.18.5", "@babel/core@^7.21.3", "@babel/core@^7.23.9": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.26.0.tgz#d78b6023cc8f3114ccf049eb219613f74a747b40" @@ -103,13 +108,13 @@ "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" -"@babel/generator@^7.25.9", "@babel/generator@^7.26.0": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.2.tgz#87b75813bec87916210e5e01939a4c823d6bb74f" - integrity sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw== +"@babel/generator@^7.26.0", "@babel/generator@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.26.3.tgz#ab8d4360544a425c90c248df7059881f4b2ce019" + integrity sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ== dependencies: - "@babel/parser" "^7.26.2" - "@babel/types" "^7.26.0" + "@babel/parser" "^7.26.3" + "@babel/types" "^7.26.3" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^3.0.2" @@ -303,12 +308,12 @@ dependencies: "@babel/types" "^7.25.8" -"@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.2": - version "7.26.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.2.tgz#fd7b6f487cfea09889557ef5d4eeb9ff9a5abd11" - integrity sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ== +"@babel/parser@^7.25.9", "@babel/parser@^7.26.0", "@babel/parser@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.26.3.tgz#8c51c5db6ddf08134af1ddbacf16aaab48bac234" + integrity sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA== dependencies: - "@babel/types" "^7.26.0" + "@babel/types" "^7.26.3" "@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9": version "7.25.9" @@ -1121,15 +1126,15 @@ globals "^11.1.0" "@babel/traverse@^7.25.9": - version "7.25.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.25.9.tgz#a50f8fe49e7f69f53de5bea7e413cd35c5e13c84" - integrity sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw== + version "7.26.4" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.26.4.tgz#ac3a2a84b908dde6d463c3bfa2c5fdc1653574bd" + integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w== dependencies: - "@babel/code-frame" "^7.25.9" - "@babel/generator" "^7.25.9" - "@babel/parser" "^7.25.9" + "@babel/code-frame" "^7.26.2" + "@babel/generator" "^7.26.3" + "@babel/parser" "^7.26.3" "@babel/template" "^7.25.9" - "@babel/types" "^7.25.9" + "@babel/types" "^7.26.3" debug "^4.3.1" globals "^11.1.0" @@ -1142,7 +1147,7 @@ "@babel/helper-validator-identifier" "^7.25.7" to-fast-properties "^2.0.0" -"@babel/types@^7.25.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.4.4": +"@babel/types@^7.25.7", "@babel/types@^7.4.4": version "7.26.0" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.0.tgz#deabd08d6b753bc8e0f198f8709fb575e31774ff" integrity sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA== @@ -1150,6 +1155,14 @@ "@babel/helper-string-parser" "^7.25.9" "@babel/helper-validator-identifier" "^7.25.9" +"@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.3": + version "7.26.3" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0" + integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA== + dependencies: + "@babel/helper-string-parser" "^7.25.9" + "@babel/helper-validator-identifier" "^7.25.9" + "@bcoe/v8-coverage@^0.2.3": version "0.2.3" resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" @@ -2419,10 +2432,10 @@ "@sentry/core" "8.40.0" "@sentry/types" "8.40.0" -"@sentry/babel-plugin-component-annotate@2.22.6": - version "2.22.6" - resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.6.tgz#829d6caf2c95c1c46108336de4e1049e6521435e" - integrity sha512-V2g1Y1I5eSe7dtUVMBvAJr8BaLRr4CLrgNgtPaZyMT4Rnps82SrZ5zqmEkLXPumlXhLUWR6qzoMNN2u+RXVXfQ== +"@sentry/babel-plugin-component-annotate@2.22.7": + version "2.22.7" + resolved "https://registry.yarnpkg.com/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.22.7.tgz#604c7e33d48528a13477e7af597c4d5fca51b8bd" + integrity sha512-aa7XKgZMVl6l04NY+3X7BP7yvQ/s8scn8KzQfTLrGRarziTlMGrsCOBQtCNWXOPEbtxAIHpZ9dsrAn5EJSivOQ== "@sentry/browser@^8.0.0": version "8.40.0" @@ -2436,14 +2449,14 @@ "@sentry/core" "8.40.0" "@sentry/types" "8.40.0" -"@sentry/bundler-plugin-core@2.22.6": - version "2.22.6" - resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.6.tgz#a1ea1fd43700a3ece9e7db016997e79a2782b87d" - integrity sha512-1esQdgSUCww9XAntO4pr7uAM5cfGhLsgTK9MEwAKNfvpMYJi9NUTYa3A7AZmdA8V6107Lo4OD7peIPrDRbaDCg== +"@sentry/bundler-plugin-core@2.22.7": + version "2.22.7" + resolved "https://registry.yarnpkg.com/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.22.7.tgz#28204a224cd1fef58d157e5beeb2493947a9bc35" + integrity sha512-ouQh5sqcB8vsJ8yTTe0rf+iaUkwmeUlGNFi35IkCFUQlWJ22qS6OfvNjOqFI19e6eGUXks0c/2ieFC4+9wJ+1g== dependencies: "@babel/core" "^7.18.5" - "@sentry/babel-plugin-component-annotate" "2.22.6" - "@sentry/cli" "^2.36.1" + "@sentry/babel-plugin-component-annotate" "2.22.7" + "@sentry/cli" "2.39.1" dotenv "^16.3.1" find-up "^5.0.0" glob "^9.3.2" @@ -2485,7 +2498,7 @@ resolved "https://registry.yarnpkg.com/@sentry/cli-win32-x64/-/cli-win32-x64-2.39.1.tgz#1a874a5570c6d162b35d9d001c96e5389d07d2cb" integrity sha512-xv0R2CMf/X1Fte3cMWie1NXuHmUyQPDBfCyIt6k6RPFPxAYUgcqgMPznYwVMwWEA1W43PaOkSn3d8ZylsDaETw== -"@sentry/cli@^2.36.1": +"@sentry/cli@2.39.1": version "2.39.1" resolved "https://registry.yarnpkg.com/@sentry/cli/-/cli-2.39.1.tgz#916bb5b7567ccf7fdf94ef6cf8a2b9ab78370d29" integrity sha512-JIb3e9vh0+OmQ0KxmexMXg9oZsR/G7HMwxt5BUIKAXZ9m17Xll4ETXTRnRUBT3sf7EpNGAmlQk1xEmVN9pYZYQ== @@ -2517,11 +2530,11 @@ integrity sha512-nuCf3U3deolPM9BjNnwCc33UtFl9ec15/r74ngAkNccn+A2JXdIAsDkGJMO/9mgSFykLe1QyeJ0pQFRisCGOiA== "@sentry/webpack-plugin@^2.7.1": - version "2.22.6" - resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-2.22.6.tgz#8c9d27d5cd89153a5b6e08cc9dcb3048b122ffbc" - integrity sha512-BiLhAzQYAz/9kCXKj2LeUKWf/9GBVn2dD0DeYK89s+sjDEaxjbcLBBiLlLrzT7eC9QVj2tUZRKOi6puCfc8ysw== + version "2.22.7" + resolved "https://registry.yarnpkg.com/@sentry/webpack-plugin/-/webpack-plugin-2.22.7.tgz#992c6c782c736f22e72eb318745e28cc24aabad7" + integrity sha512-j5h5LZHWDlm/FQCCmEghQ9FzYXwfZdlOf3FE/X6rK6lrtx0JCAkq+uhMSasoyP4XYKL4P4vRS6WFSos4jxf/UA== dependencies: - "@sentry/bundler-plugin-core" "2.22.6" + "@sentry/bundler-plugin-core" "2.22.7" unplugin "1.0.1" uuid "^9.0.0" @@ -3410,7 +3423,7 @@ dependencies: eslint-plugin-unicorn "^54.0.0" -"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.12.1": +"@webassemblyjs/ast@1.14.1", "@webassemblyjs/ast@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.14.1.tgz#a9f6a07f2b03c95c8d38c4536a1fdfb521ff55b6" integrity sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ== @@ -3476,7 +3489,7 @@ resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.13.2.tgz#917a20e93f71ad5602966c2d685ae0c6c21f60f1" integrity sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ== -"@webassemblyjs/wasm-edit@^1.12.1": +"@webassemblyjs/wasm-edit@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz#ac6689f502219b59198ddec42dcd496b1004d597" integrity sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ== @@ -3511,7 +3524,7 @@ "@webassemblyjs/wasm-gen" "1.14.1" "@webassemblyjs/wasm-parser" "1.14.1" -"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.12.1": +"@webassemblyjs/wasm-parser@1.14.1", "@webassemblyjs/wasm-parser@^1.14.1": version "1.14.1" resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz#b3e13f1893605ca78b52c68e54cf6a865f90b9fb" integrity sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ== @@ -4197,7 +4210,15 @@ bytes@3.1.2: resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== -call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: +call-bind-apply-helpers@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz#32e5892e6361b29b0b545ba6f7763378daca2840" + integrity sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6: version "1.0.7" resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.7.tgz#06016599c40c56498c18769d2730be242b6fa3b9" integrity sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w== @@ -4208,6 +4229,16 @@ call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.6, call-bind@^1.0.7: get-intrinsic "^1.2.4" set-function-length "^1.2.1" +call-bind@^1.0.7: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -4789,11 +4820,11 @@ css-tree@^2.3.1: source-map-js "^1.0.1" css-tree@^3.0.0, css-tree@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.0.1.tgz#bea6deaea60bb5bcf416adfb1ecf607a8d9471f6" - integrity sha512-8Fxxv+tGhORlshCdCwnNJytvlvq46sOLSYEx2ZIGurahWvMucSRnyjPA3AmrMq4VPRYbHVpWj5VkiVasrM2H4Q== + version "3.1.0" + resolved "https://registry.yarnpkg.com/css-tree/-/css-tree-3.1.0.tgz#7aabc035f4e66b5c86f54570d55e05b1346eb0fd" + integrity sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w== dependencies: - mdn-data "2.12.1" + mdn-data "2.12.2" source-map-js "^1.0.1" css-tree@~2.2.0: @@ -4970,10 +5001,10 @@ debug@2.6.9: dependencies: ms "2.0.0" -debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7, debug@~4.3.6: - version "4.3.7" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" - integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== +debug@4, debug@^4.1.0, debug@^4.3.1: + version "4.4.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.0.tgz#2b3f2aea2ffeb776477460267377dc8710faba8a" + integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA== dependencies: ms "^2.1.3" @@ -4984,6 +5015,13 @@ debug@^3.2.7: dependencies: ms "^2.1.1" +debug@^4.1.1, debug@^4.3.2, debug@^4.3.4, debug@^4.3.7, debug@~4.3.6: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -5241,9 +5279,18 @@ dot-case@^3.0.4: tslib "^2.0.3" dotenv@^16.0.2, dotenv@^16.3.1: - version "16.4.5" - resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" - integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== + version "16.4.7" + resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.7.tgz#0e20c5b82950140aa99be360a8a5f52335f53c26" + integrity sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ== + +dunder-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.0.tgz#c2fce098b3c8f8899554905f4377b6d85dabaa80" + integrity sha512-9+Sj30DIu+4KvHqMfLUGLFYL2PkURSYMVXJyXe92nFRvlYq5hBjLEhblKB+vkd/WVlUYMWigiY07T91Fkk0+4A== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-errors "^1.3.0" + gopd "^1.2.0" duplexer@^0.1.2: version "0.1.2" @@ -5282,9 +5329,9 @@ ejs@^3.1.8: jake "^10.8.5" electron-to-chromium@^1.5.41: - version "1.5.67" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.67.tgz#66ebd2be4a77469ac2760ef5e9e460ba9a43a845" - integrity sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ== + version "1.5.72" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.72.tgz#a732805986d3a5b5fedd438ddf4616c7d78ac2df" + integrity sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw== emittery@^0.13.1: version "0.13.1" @@ -5433,12 +5480,10 @@ es-abstract@^1.17.5, es-abstract@^1.22.1, es-abstract@^1.22.3, es-abstract@^1.23 unbox-primitive "^1.0.2" which-typed-array "^1.1.15" -es-define-property@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.0.tgz#c7faefbdff8b2696cf5f46921edfb77cc4ba3845" - integrity sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ== - dependencies: - get-intrinsic "^1.2.4" +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== es-errors@^1.2.1, es-errors@^1.3.0: version "1.3.0" @@ -5921,9 +5966,9 @@ expect@^29.0.0, expect@^29.7.0: jest-util "^29.7.0" express@^4.18.2, express@^4.19.2: - version "4.21.1" - resolved "https://registry.yarnpkg.com/express/-/express-4.21.1.tgz#9dae5dda832f16b4eec941a4e44aa89ec481b281" - integrity sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ== + version "4.21.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== dependencies: accepts "~1.3.8" array-flatten "1.1.1" @@ -5944,7 +5989,7 @@ express@^4.18.2, express@^4.19.2: methods "~1.1.2" on-finished "2.4.1" parseurl "~1.3.3" - path-to-regexp "0.1.10" + path-to-regexp "0.1.12" proxy-addr "~2.0.7" qs "6.13.0" range-parser "~1.2.1" @@ -6305,7 +6350,7 @@ get-east-asian-width@^1.0.0: resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== -get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: +get-intrinsic@^1.2.1, get-intrinsic@^1.2.3: version "1.2.4" resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.4.tgz#e385f5a4b5227d449c3eabbad05494ef0abbeadd" integrity sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ== @@ -6316,6 +6361,20 @@ get-intrinsic@^1.2.1, get-intrinsic@^1.2.3, get-intrinsic@^1.2.4: has-symbols "^1.0.3" hasown "^2.0.0" +get-intrinsic@^1.2.4: + version "1.2.5" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.5.tgz#dfe7dd1b30761b464fe51bf4bb00ac7c37b681e7" + integrity sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg== + dependencies: + call-bind-apply-helpers "^1.0.0" + dunder-proto "^1.0.0" + es-define-property "^1.0.1" + es-errors "^1.3.0" + function-bind "^1.1.2" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + get-nonce@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/get-nonce/-/get-nonce-1.0.1.tgz#fdf3f0278073820d2ce9426c18f07481b1e0cdf3" @@ -6492,7 +6551,12 @@ globjoin@^0.1.4: resolved "https://registry.yarnpkg.com/globjoin/-/globjoin-0.1.4.tgz#2f4494ac8919e3767c5cbb691e9f463324285d43" integrity sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg== -gopd@^1.0.1, gopd@^1.1.0: +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +gopd@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.1.0.tgz#df8f0839c2d48caefc32a025a49294d39606c912" integrity sha512-FQoVQnqcdk4hVM4JN1eromaun4iuS34oStkdlLENLdpULsuQcTyXj8w7ayhuUfPwEYZ1ZOooOTT6fdA9Vmx/RA== @@ -6543,18 +6607,30 @@ has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: dependencies: es-define-property "^1.0.0" -has-proto@^1.0.1, has-proto@^1.0.3: +has-proto@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + +has-proto@^1.0.3: version "1.1.0" resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.1.0.tgz#deb10494cbbe8809bce168a3b961f42969f5ed43" integrity sha512-QLdzI9IIO1Jg7f9GT1gXpPpXArAn6cS31R1eEZqz08Gc+uQ8/XiqHWt17Fiw+2p6oTTIq5GXEpQkAlA88YRl/Q== dependencies: call-bind "^1.0.7" -has-symbols@^1.0.2, has-symbols@^1.0.3: +has-symbols@^1.0.2: version "1.0.3" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + has-tostringtag@^1.0.0, has-tostringtag@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" @@ -7878,9 +7954,9 @@ kleur@^3.0.3: integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== knip@^5.36.2: - version "5.38.3" - resolved "https://registry.yarnpkg.com/knip/-/knip-5.38.3.tgz#a139e0c6215c9958d213ce1a9e3985cf5de2774e" - integrity sha512-pg3CMzWlZy4mnuwxieGoK74oOgzFPvsUR/aE8NSqx2oQr56soXTzmw8GsHR277pU52Fe0h4/pho2PMhVeEvj8g== + version "5.39.2" + resolved "https://registry.yarnpkg.com/knip/-/knip-5.39.2.tgz#1faacd8d8ef36b509b2f6e396cce85b645abb04e" + integrity sha512-BuvuWRllLWV/r2G4m9ggNH+DZ6gouP/dhtJPXVlMbWNF++w9/EfrF6k2g7YBKCwjzCC+PXmYtpH8S2t8RjnY4Q== dependencies: "@nodelib/fs.walk" "1.2.8" "@snyk/github-codeowners" "1.1.0" @@ -8286,12 +8362,7 @@ mdn-data@2.0.30: resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.0.30.tgz#ce4df6f80af6cfbe218ecd5c552ba13c4dfa08cc" integrity sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA== -mdn-data@2.12.1: - version "2.12.1" - resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.12.1.tgz#10cb462215c13d95c92ff60d0fb3becac1bbb924" - integrity sha512-rsfnCbOHjqrhWxwt5/wtSLzpoKTzW7OXdT5lLOIH1OTYhWu9rRJveGq0sKvDZODABH7RX+uoR+DYcpFnq4Tf6Q== - -mdn-data@^2.12.2: +mdn-data@2.12.2, mdn-data@^2.12.2: version "2.12.2" resolved "https://registry.yarnpkg.com/mdn-data/-/mdn-data-2.12.2.tgz#9ae6c41a9e65adf61318b32bff7b64fbfb13f8cf" integrity sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA== @@ -8575,9 +8646,9 @@ node-int64@^0.4.0: integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== node-releases@^2.0.18: - version "2.0.18" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.18.tgz#f010e8d35e2fe8d6b2944f03f70213ecedc4ca3f" - integrity sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g== + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== normalize-package-data@^2.5.0: version "2.5.0" @@ -8963,10 +9034,10 @@ path-scurry@^2.0.0: lru-cache "^11.0.0" minipass "^7.1.2" -path-to-regexp@0.1.10: - version "0.1.10" - resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b" - integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w== +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== path-to-regexp@^2.2.1: version "2.4.0" @@ -9704,10 +9775,10 @@ prelude-ls@^1.2.1: resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== -prettier@3.4.1: - version "3.4.1" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.1.tgz#e211d451d6452db0a291672ca9154bc8c2579f7b" - integrity sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg== +prettier@3.4.2: + version "3.4.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.4.2.tgz#a5ce1fb522a588bf2b78ca44c6e6fe5aa5a2b13f" + integrity sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ== pretty-error@^4.0.0: version "4.0.0" @@ -10520,7 +10591,7 @@ set-blocking@^2.0.0: resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== -set-function-length@^1.2.1: +set-function-length@^1.2.1, set-function-length@^1.2.2: version "1.2.2" resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== @@ -11180,7 +11251,7 @@ terser-webpack-plugin@^5.3.10, terser-webpack-plugin@^5.3.9: serialize-javascript "^6.0.1" terser "^5.26.0" -terser@^5.10.0, terser@^5.26.0: +terser@^5.10.0: version "5.36.0" resolved "https://registry.yarnpkg.com/terser/-/terser-5.36.0.tgz#8b0dbed459ac40ff7b4c9fd5a3a2029de105180e" integrity sha512-IYV9eNMuFAV4THUspIRXkLakHnV6XO7FEdtKjf/mDyrnqUg9LnlOn6/RwRvM9SZjR4GUq8Nk8zj67FzVARr74w== @@ -11190,6 +11261,16 @@ terser@^5.10.0, terser@^5.26.0: commander "^2.20.0" source-map-support "~0.5.20" +terser@^5.26.0: + version "5.37.0" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.37.0.tgz#38aa66d1cfc43d0638fab54e43ff8a4f72a21ba3" + integrity sha512-B8wRRkmre4ERucLM/uXx4MOV5cbnOlVAqUst+1+iLKPI0dOgFO28f84ptoQt9HEI537PMzfYa/d+GEPKTRXmYA== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.8.2" + commander "^2.20.0" + source-map-support "~0.5.20" + test-exclude@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" @@ -11885,15 +11966,15 @@ webpack-virtual-modules@^0.5.0: integrity sha512-kyDivFZ7ZM0BVOUteVbDFhlRt7Ah/CSPwJdi8hBpkK7QLumUqdLtVfm/PX/hkcnrvr0i77fO5+TjZ94Pe+C9iw== webpack@^5.89.0: - version "5.96.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.96.1.tgz#3676d1626d8312b6b10d0c18cc049fba7ac01f0c" - integrity sha512-l2LlBSvVZGhL4ZrPwyr8+37AunkcYj5qh8o6u2/2rzoPc8gxFJkLj1WxNgooi9pnoc06jh0BjuXnamM4qlujZA== + version "5.97.1" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.97.1.tgz#972a8320a438b56ff0f1d94ade9e82eac155fa58" + integrity sha512-EksG6gFY3L1eFMROS/7Wzgrii5mBAFe4rIr3r2BTfo7bcc+DWwFZ4OJ/miOuHJO/A85HwyI4eQ0F6IKXesO7Fg== dependencies: "@types/eslint-scope" "^3.7.7" "@types/estree" "^1.0.6" - "@webassemblyjs/ast" "^1.12.1" - "@webassemblyjs/wasm-edit" "^1.12.1" - "@webassemblyjs/wasm-parser" "^1.12.1" + "@webassemblyjs/ast" "^1.14.1" + "@webassemblyjs/wasm-edit" "^1.14.1" + "@webassemblyjs/wasm-parser" "^1.14.1" acorn "^8.14.0" browserslist "^4.24.0" chrome-trace-event "^1.0.2" @@ -12232,6 +12313,6 @@ zod-validation-error@^3.0.3: integrity sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ== zod@^3.22.4: - version "3.23.8" - resolved "https://registry.yarnpkg.com/zod/-/zod-3.23.8.tgz#e37b957b5d52079769fb8097099b592f0ef4067d" - integrity sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g== + version "3.24.0" + resolved "https://registry.yarnpkg.com/zod/-/zod-3.24.0.tgz#babb32313f7c5f4a99812feee806d186b4f76bde" + integrity sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w== From b86bb5cc2f897229891ad839ccdc12604773dbf9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 02:01:31 +0000 Subject: [PATCH 13/20] Update guibranco/github-status-action-v2 digest to d469d49 (#28702) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 0c531f89b4..35803a60f1 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -104,7 +104,7 @@ jobs: - name: Skip SonarCloud in merge queue if: github.event_name == 'merge_group' || inputs.disable_coverage == 'true' - uses: guibranco/github-status-action-v2@66088c44e212a906c32a047529a213d81809ec1c + uses: guibranco/github-status-action-v2@d469d49426f5a7b8a1fbcac20ad274d3e4892321 with: authToken: ${{ secrets.GITHUB_TOKEN }} state: success From b330de5d6e64798dafd7915cc440d956c9b55a22 Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Dec 2024 13:10:27 +0000 Subject: [PATCH 14/20] Factor out crypto setup process into a store (#28675) * Factor out crypto setup process into a store To make components pure and avoid react 18 dev mode problems due to components making requests when mounted. * fix test * test for the store * Add comment --- src/@types/global.d.ts | 2 + src/components/structures/MatrixChat.tsx | 16 +- src/components/structures/auth/E2eSetup.tsx | 11 +- .../security/InitialCryptoSetupDialog.tsx | 54 ++----- src/stores/InitialCryptoSetupStore.ts | 140 ++++++++++++++++++ src/stores/SetupEncryptionStore.ts | 5 + .../InitialCryptoSetupDialog-test.tsx | 114 +++----------- .../stores/InitialCryptoSetupStore-test.ts | 85 +++++++++++ 8 files changed, 274 insertions(+), 153 deletions(-) create mode 100644 src/stores/InitialCryptoSetupStore.ts create mode 100644 test/unit-tests/stores/InitialCryptoSetupStore-test.ts diff --git a/src/@types/global.d.ts b/src/@types/global.d.ts index be36c5b689..f921cd291f 100644 --- a/src/@types/global.d.ts +++ b/src/@types/global.d.ts @@ -44,6 +44,7 @@ import { IConfigOptions } from "../IConfigOptions"; import { MatrixDispatcher } from "../dispatcher/dispatcher"; import { DeepReadonly } from "./common"; import MatrixChat from "../components/structures/MatrixChat"; +import { InitialCryptoSetupStore } from "../stores/InitialCryptoSetupStore"; /* eslint-disable @typescript-eslint/naming-convention */ @@ -117,6 +118,7 @@ declare global { mxPerformanceEntryNames: any; mxUIStore: UIStore; mxSetupEncryptionStore?: SetupEncryptionStore; + mxInitialCryptoStore?: InitialCryptoSetupStore; mxRoomScrollStateStore?: RoomScrollStateStore; mxActiveWidgetStore?: ActiveWidgetStore; mxOnRecaptchaLoaded?: () => void; diff --git a/src/components/structures/MatrixChat.tsx b/src/components/structures/MatrixChat.tsx index 548dbff983..ee120c430a 100644 --- a/src/components/structures/MatrixChat.tsx +++ b/src/components/structures/MatrixChat.tsx @@ -132,6 +132,7 @@ import { SessionLockStolenView } from "./auth/SessionLockStolenView"; import { ConfirmSessionLockTheftView } from "./auth/ConfirmSessionLockTheftView"; import { LoginSplashView } from "./auth/LoginSplashView"; import { cleanUpDraftsIfRequired } from "../../DraftCleaner"; +import { InitialCryptoSetupStore } from "../../stores/InitialCryptoSetupStore"; // legacy export export { default as Views } from "../../Views"; @@ -428,6 +429,12 @@ export default class MatrixChat extends React.PureComponent { !(await shouldSkipSetupEncryption(cli)) ) { // if cross-signing is not yet set up, do so now if possible. + InitialCryptoSetupStore.sharedInstance().startInitialCryptoSetup( + cli, + Boolean(this.tokenLogin), + this.stores, + this.onCompleteSecurityE2eSetupFinished, + ); this.setStateForNewView({ view: Views.E2E_SETUP }); } else { this.onLoggedIn(); @@ -2073,14 +2080,7 @@ export default class MatrixChat extends React.PureComponent { } else if (this.state.view === Views.COMPLETE_SECURITY) { view = ; } else if (this.state.view === Views.E2E_SETUP) { - view = ( - - ); + view = ; } else if (this.state.view === Views.LOGGED_IN) { // `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`, diff --git a/src/components/structures/auth/E2eSetup.tsx b/src/components/structures/auth/E2eSetup.tsx index 265905db10..3b064d6134 100644 --- a/src/components/structures/auth/E2eSetup.tsx +++ b/src/components/structures/auth/E2eSetup.tsx @@ -7,17 +7,13 @@ Please see LICENSE files in the repository root for full details. */ import React from "react"; -import { MatrixClient } from "matrix-js-sdk/src/matrix"; import AuthPage from "../../views/auth/AuthPage"; import CompleteSecurityBody from "../../views/auth/CompleteSecurityBody"; import { InitialCryptoSetupDialog } from "../../views/dialogs/security/InitialCryptoSetupDialog"; interface IProps { - matrixClient: MatrixClient; onFinished: () => void; - accountPassword?: string; - tokenLogin: boolean; } export default class E2eSetup extends React.Component { @@ -25,12 +21,7 @@ export default class E2eSetup extends React.Component { return ( - + ); diff --git a/src/components/views/dialogs/security/InitialCryptoSetupDialog.tsx b/src/components/views/dialogs/security/InitialCryptoSetupDialog.tsx index 4ee69f17a4..22635662ce 100644 --- a/src/components/views/dialogs/security/InitialCryptoSetupDialog.tsx +++ b/src/components/views/dialogs/security/InitialCryptoSetupDialog.tsx @@ -7,20 +7,15 @@ SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only Please see LICENSE files in the repository root for full details. */ -import React, { useCallback, useEffect, useState } from "react"; -import { logger } from "matrix-js-sdk/src/logger"; -import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import React, { useCallback } from "react"; import { _t } from "../../../../languageHandler"; import DialogButtons from "../../elements/DialogButtons"; import BaseDialog from "../BaseDialog"; import Spinner from "../../elements/Spinner"; -import { createCrossSigning } from "../../../../CreateCrossSigning"; +import { InitialCryptoSetupStore, useInitialCryptoSetupStatus } from "../../../../stores/InitialCryptoSetupStore"; interface Props { - matrixClient: MatrixClient; - accountPassword?: string; - tokenLogin: boolean; onFinished: (success?: boolean) => void; } @@ -29,54 +24,27 @@ interface Props { * In most cases, only a spinner is shown, but for more * complex auth like SSO, the user may need to complete some steps to proceed. */ -export const InitialCryptoSetupDialog: React.FC = ({ - matrixClient, - accountPassword, - tokenLogin, - onFinished, -}) => { - const [error, setError] = useState(false); +export const InitialCryptoSetupDialog: React.FC = ({ onFinished }) => { + const onRetryClick = useCallback(() => { + InitialCryptoSetupStore.sharedInstance().retry(); + }, []); - const doSetup = useCallback(async () => { - const cryptoApi = matrixClient.getCrypto(); - if (!cryptoApi) return; - - setError(false); - - try { - await createCrossSigning(matrixClient, tokenLogin, accountPassword); - - onFinished(true); - } catch (e) { - if (tokenLogin) { - // ignore any failures, we are relying on grace period here - onFinished(false); - return; - } - - setError(true); - logger.error("Error bootstrapping cross-signing", e); - } - }, [matrixClient, tokenLogin, accountPassword, onFinished]); - - const onCancel = useCallback(() => { + const onCancelClick = useCallback(() => { onFinished(false); }, [onFinished]); - useEffect(() => { - doSetup(); - }, [doSetup]); + const status = useInitialCryptoSetupStatus(InitialCryptoSetupStore.sharedInstance()); let content; - if (error) { + if (status === "error") { content = (

{_t("encryption|unable_to_setup_keys_error")}

diff --git a/src/stores/InitialCryptoSetupStore.ts b/src/stores/InitialCryptoSetupStore.ts new file mode 100644 index 0000000000..0c2e49f5ca --- /dev/null +++ b/src/stores/InitialCryptoSetupStore.ts @@ -0,0 +1,140 @@ +/* +Copyright 2024 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only +Please see LICENSE files in the repository root for full details. +*/ + +import EventEmitter from "events"; +import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import { logger } from "matrix-js-sdk/src/logger"; +import { useEffect, useState } from "react"; + +import { createCrossSigning } from "../CreateCrossSigning"; +import { SdkContextClass } from "../contexts/SDKContext"; + +type Status = "in_progress" | "complete" | "error" | undefined; + +export const useInitialCryptoSetupStatus = (store: InitialCryptoSetupStore): Status => { + const [status, setStatus] = useState(store.getStatus()); + + useEffect(() => { + const update = (): void => { + setStatus(store.getStatus()); + }; + + store.on("update", update); + + return () => { + store.off("update", update); + }; + }, [store]); + + return status; +}; + +/** + * Logic for setting up crypto state that's done immediately after + * a user registers. Should be transparent to the user, not requiring + * interaction in most cases. + * As distinct from SetupEncryptionStore which is for setting up + * 4S or verifying the device, will always require interaction + * from the user in some form. + */ +export class InitialCryptoSetupStore extends EventEmitter { + private status: Status = undefined; + + private client?: MatrixClient; + private isTokenLogin?: boolean; + private stores?: SdkContextClass; + private onFinished?: (success: boolean) => void; + + public static sharedInstance(): InitialCryptoSetupStore { + if (!window.mxInitialCryptoStore) window.mxInitialCryptoStore = new InitialCryptoSetupStore(); + return window.mxInitialCryptoStore; + } + + public getStatus(): Status { + return this.status; + } + + /** + * Start the initial crypto setup process. + * + * @param {MatrixClient} client The client to use for the setup + * @param {boolean} isTokenLogin True if the user logged in via a token login, otherwise false + * @param {SdkContextClass} stores The stores to use for the setup + */ + public startInitialCryptoSetup( + client: MatrixClient, + isTokenLogin: boolean, + stores: SdkContextClass, + onFinished: (success: boolean) => void, + ): void { + this.client = client; + this.isTokenLogin = isTokenLogin; + this.stores = stores; + this.onFinished = onFinished; + + // We just start this process: it's progress is tracked by the events rather + // than returning a promise, so we don't bother. + this.doSetup().catch(() => logger.error("Initial crypto setup failed")); + } + + /** + * Retry the initial crypto setup process. + * + * If no crypto setup is currently in process, this will return false. + * + * @returns {boolean} True if a retry was initiated, otherwise false + */ + public retry(): boolean { + if (this.client === undefined || this.isTokenLogin === undefined || this.stores == undefined) return false; + + this.doSetup().catch(() => logger.error("Initial crypto setup failed")); + + return true; + } + + private reset(): void { + this.client = undefined; + this.isTokenLogin = undefined; + this.stores = undefined; + } + + private async doSetup(): Promise { + if (this.client === undefined || this.isTokenLogin === undefined || this.stores == undefined) { + throw new Error("No setup is in progress"); + } + + const cryptoApi = this.client.getCrypto(); + if (!cryptoApi) throw new Error("No crypto module found!"); + + this.status = "in_progress"; + this.emit("update"); + + try { + await createCrossSigning(this.client, this.isTokenLogin, this.stores.accountPasswordStore.getPassword()); + + this.reset(); + + this.status = "complete"; + this.emit("update"); + this.onFinished?.(true); + } catch (e) { + if (this.isTokenLogin) { + // ignore any failures, we are relying on grace period here + this.reset(); + + this.status = "complete"; + this.emit("update"); + this.onFinished?.(true); + + return; + } + logger.error("Error bootstrapping cross-signing", e); + this.status = "error"; + this.emit("update"); + } + } +} diff --git a/src/stores/SetupEncryptionStore.ts b/src/stores/SetupEncryptionStore.ts index 70c721b1ca..a13ba26f72 100644 --- a/src/stores/SetupEncryptionStore.ts +++ b/src/stores/SetupEncryptionStore.ts @@ -33,6 +33,11 @@ export enum Phase { ConfirmReset = 6, } +/** + * Logic for setting up 4S and/or verifying the user's device: a process requiring + * ongoing interaction with the user, as distinct from InitialCryptoSetupStore which + * a (usually) non-interactive process that happens immediately after registration. + */ export class SetupEncryptionStore extends EventEmitter { private started?: boolean; public phase?: Phase; diff --git a/test/components/views/dialogs/security/InitialCryptoSetupDialog-test.tsx b/test/components/views/dialogs/security/InitialCryptoSetupDialog-test.tsx index 4d3d495a38..a589b55289 100644 --- a/test/components/views/dialogs/security/InitialCryptoSetupDialog-test.tsx +++ b/test/components/views/dialogs/security/InitialCryptoSetupDialog-test.tsx @@ -7,31 +7,22 @@ Please see LICENSE files in the repository root for full details. */ import React from "react"; -import { render, screen, waitFor } from "jest-matrix-react"; -import { mocked } from "jest-mock"; -import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import { render, screen } from "jest-matrix-react"; +import userEvent from "@testing-library/user-event"; -import { createCrossSigning } from "../../../../../src/CreateCrossSigning"; import { InitialCryptoSetupDialog } from "../../../../../src/components/views/dialogs/security/InitialCryptoSetupDialog"; -import { createTestClient } from "../../../../test-utils"; - -jest.mock("../../../../../src/CreateCrossSigning", () => ({ - createCrossSigning: jest.fn(), -})); +import { InitialCryptoSetupStore } from "../../../../../src/stores/InitialCryptoSetupStore"; describe("InitialCryptoSetupDialog", () => { - let client: MatrixClient; - let createCrossSigningResolve: () => void; - let createCrossSigningReject: (e: Error) => void; + const storeMock = { + getStatus: jest.fn(), + retry: jest.fn(), + on: jest.fn(), + off: jest.fn(), + }; beforeEach(() => { - client = createTestClient(); - mocked(createCrossSigning).mockImplementation(() => { - return new Promise((resolve, reject) => { - createCrossSigningResolve = resolve; - createCrossSigningReject = reject; - }); - }); + jest.spyOn(InitialCryptoSetupStore, "sharedInstance").mockReturnValue(storeMock as any); }); afterEach(() => { @@ -39,93 +30,32 @@ describe("InitialCryptoSetupDialog", () => { jest.restoreAllMocks(); }); - it("should call createCrossSigning and show a spinner while it runs", async () => { + it("should show a spinner while the setup is in progress", async () => { const onFinished = jest.fn(); - render( - , - ); + storeMock.getStatus.mockReturnValue("in_progress"); + + render(); - expect(createCrossSigning).toHaveBeenCalledWith(client, false, "hunter2"); expect(screen.getByTestId("spinner")).toBeInTheDocument(); - - createCrossSigningResolve!(); - - await waitFor(() => expect(onFinished).toHaveBeenCalledWith(true)); }); - it("should display an error if createCrossSigning fails", async () => { - render( - , - ); + it("should display an error if setup has failed", async () => { + storeMock.getStatus.mockReturnValue("error"); - createCrossSigningReject!(new Error("generic error message")); + render(); await expect(await screen.findByRole("button", { name: "Retry" })).toBeInTheDocument(); }); - it("ignores failures when tokenLogin is true", async () => { + it("calls retry when retry button pressed", async () => { const onFinished = jest.fn(); + storeMock.getStatus.mockReturnValue("error"); - render( - , - ); + render(); - createCrossSigningReject!(new Error("generic error message")); + await userEvent.click(await screen.findByRole("button", { name: "Retry" })); - await waitFor(() => expect(onFinished).toHaveBeenCalledWith(false)); - }); - - it("cancels the dialog when the cancel button is clicked", async () => { - const onFinished = jest.fn(); - - render( - , - ); - - createCrossSigningReject!(new Error("generic error message")); - - const cancelButton = await screen.findByRole("button", { name: "Cancel" }); - cancelButton.click(); - - expect(onFinished).toHaveBeenCalledWith(false); - }); - - it("should retry when the retry button is clicked", async () => { - render( - , - ); - - createCrossSigningReject!(new Error("generic error message")); - - const retryButton = await screen.findByRole("button", { name: "Retry" }); - retryButton.click(); - - expect(createCrossSigning).toHaveBeenCalledTimes(2); + expect(storeMock.retry).toHaveBeenCalled(); }); }); diff --git a/test/unit-tests/stores/InitialCryptoSetupStore-test.ts b/test/unit-tests/stores/InitialCryptoSetupStore-test.ts new file mode 100644 index 0000000000..64b81bade2 --- /dev/null +++ b/test/unit-tests/stores/InitialCryptoSetupStore-test.ts @@ -0,0 +1,85 @@ +/* +Copyright 2024 New Vector Ltd. + +SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only +Please see LICENSE files in the repository root for full details. +*/ + +import { mocked } from "jest-mock"; +import { MatrixClient } from "matrix-js-sdk/src/matrix"; +import { waitFor } from "jest-matrix-react"; + +import { createCrossSigning } from "../../../src/CreateCrossSigning"; +import { InitialCryptoSetupStore } from "../../../src/stores/InitialCryptoSetupStore"; +import { SdkContextClass } from "../../../src/contexts/SDKContext"; +import { createTestClient } from "../../test-utils"; +import { AccountPasswordStore } from "../../../src/stores/AccountPasswordStore"; + +jest.mock("../../../src/CreateCrossSigning", () => ({ + createCrossSigning: jest.fn(), +})); + +describe("InitialCryptoSetupStore", () => { + let testStore: InitialCryptoSetupStore; + let client: MatrixClient; + let stores: SdkContextClass; + + let createCrossSigningResolve: () => void; + let createCrossSigningReject: (e: Error) => void; + + beforeEach(() => { + testStore = new InitialCryptoSetupStore(); + client = createTestClient(); + stores = { + accountPasswordStore: { + getPassword: jest.fn(), + } as unknown as AccountPasswordStore, + } as unknown as SdkContextClass; + + mocked(createCrossSigning).mockImplementation(() => { + return new Promise((resolve, reject) => { + createCrossSigningResolve = resolve; + createCrossSigningReject = reject; + }); + }); + }); + + it("should call createCrossSigning when startInitialCryptoSetup is called", async () => { + testStore.startInitialCryptoSetup(client, false, stores, jest.fn()); + + await waitFor(() => expect(createCrossSigning).toHaveBeenCalled()); + }); + + it("emits an update event when createCrossSigning resolves", async () => { + const updateSpy = jest.fn(); + testStore.on("update", updateSpy); + + testStore.startInitialCryptoSetup(client, false, stores, jest.fn()); + createCrossSigningResolve(); + + await waitFor(() => expect(updateSpy).toHaveBeenCalled()); + expect(testStore.getStatus()).toBe("complete"); + }); + + it("emits an update event when createCrossSigning rejects", async () => { + const updateSpy = jest.fn(); + testStore.on("update", updateSpy); + + testStore.startInitialCryptoSetup(client, false, stores, jest.fn()); + createCrossSigningReject(new Error("Test error")); + + await waitFor(() => expect(updateSpy).toHaveBeenCalled()); + expect(testStore.getStatus()).toBe("error"); + }); + + it("should ignore failures if tokenLogin is true", async () => { + const updateSpy = jest.fn(); + testStore.on("update", updateSpy); + + testStore.startInitialCryptoSetup(client, true, stores, jest.fn()); + createCrossSigningReject(new Error("Test error")); + + await waitFor(() => expect(updateSpy).toHaveBeenCalled()); + expect(testStore.getStatus()).toBe("complete"); + }); +}); From ba98c2085d5239e168c825b7d5683890e2882728 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 13:13:09 +0000 Subject: [PATCH 15/20] Update dependency @formatjs/intl-segmenter to v11.7.5 (#28713) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/yarn.lock b/yarn.lock index 759939eca9..73c74ed8ff 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1608,36 +1608,37 @@ resolved "https://registry.yarnpkg.com/@fontsource/inter/-/inter-5.1.0.tgz#ab629b2c662457022d2d6a29854b8dc8ba538c47" integrity sha512-zKZR3kf1G0noIes1frLfOHP5EXVVm0M7sV/l9f/AaYf+M/DId35FO4LkigWjqWYjTJZGgplhdv4cB+ssvCqr5A== -"@formatjs/ecma402-abstract@2.2.4": - version "2.2.4" - resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.2.4.tgz#355e42d375678229d46dc8ad7a7139520dd03e7b" - integrity sha512-lFyiQDVvSbQOpU+WFd//ILolGj4UgA/qXrKeZxdV14uKiAUiPAtX6XAn7WBCRi7Mx6I7EybM9E5yYn4BIpZWYg== +"@formatjs/ecma402-abstract@2.3.1": + version "2.3.1" + resolved "https://registry.yarnpkg.com/@formatjs/ecma402-abstract/-/ecma402-abstract-2.3.1.tgz#cdeb3ffe1aeea9c4284b85b7e37e8e8615314c39" + integrity sha512-Ip9uV+/MpLXWRk03U/GzeJMuPeOXpJBSB5V1tjA6kJhvqssye5J5LoYLc7Z5IAHb7nR62sRoguzrFiVCP/hnzw== dependencies: - "@formatjs/fast-memoize" "2.2.3" - "@formatjs/intl-localematcher" "0.5.8" + "@formatjs/fast-memoize" "2.2.5" + "@formatjs/intl-localematcher" "0.5.9" + decimal.js "10" tslib "2" -"@formatjs/fast-memoize@2.2.3": - version "2.2.3" - resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.3.tgz#74e64109279d5244f9fc281f3ae90c407cece823" - integrity sha512-3jeJ+HyOfu8osl3GNSL4vVHUuWFXR03Iz9jjgI7RwjG6ysu/Ymdr0JRCPHfF5yGbTE6JCrd63EpvX1/WybYRbA== +"@formatjs/fast-memoize@2.2.5": + version "2.2.5" + resolved "https://registry.yarnpkg.com/@formatjs/fast-memoize/-/fast-memoize-2.2.5.tgz#54a4a1793d773b72c372d3dcab3595149aee7880" + integrity sha512-6PoewUMrrcqxSoBXAOJDiW1m+AmkrAj0RiXnOMD59GRaswjXhm3MDhgepXPBgonc09oSirAJTsAggzAGQf6A6g== dependencies: tslib "2" -"@formatjs/intl-localematcher@0.5.8": - version "0.5.8" - resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.8.tgz#b11bbd04bd3551f7cadcb1ef1e231822d0e3c97e" - integrity sha512-I+WDNWWJFZie+jkfkiK5Mp4hEDyRSEvmyfYadflOno/mmKJKcB17fEpEH0oJu/OWhhCJ8kJBDz2YMd/6cDl7Mg== +"@formatjs/intl-localematcher@0.5.9": + version "0.5.9" + resolved "https://registry.yarnpkg.com/@formatjs/intl-localematcher/-/intl-localematcher-0.5.9.tgz#43c6ee22be85b83340bcb09bdfed53657a2720db" + integrity sha512-8zkGu/sv5euxbjfZ/xmklqLyDGQSxsLqg8XOq88JW3cmJtzhCP8EtSJXlaKZnVO4beEaoiT9wj4eIoCQ9smwxA== dependencies: tslib "2" "@formatjs/intl-segmenter@^11.5.7": - version "11.7.4" - resolved "https://registry.yarnpkg.com/@formatjs/intl-segmenter/-/intl-segmenter-11.7.4.tgz#f99d87ee3f98515069285438a4913681fc243252" - integrity sha512-pyHgFO86/CReKl20oK9jgaTMzSaG/nIMteMW8YuwUcS22EoMI1qbGTZ65oQ38KMT05SiHiMee2CP3WZvCi8YSQ== + version "11.7.7" + resolved "https://registry.yarnpkg.com/@formatjs/intl-segmenter/-/intl-segmenter-11.7.7.tgz#8a5aaa316e11ca2d31b99222e6fcf1ab539b085e" + integrity sha512-610J5xz5DxtEpa16zNR89CrvA9qWHxQFkUB3FKiGao0Nwn7i8cl+oyBhuH9SvtXF9j2LUOM9VMdVCMzJkVANNw== dependencies: - "@formatjs/ecma402-abstract" "2.2.4" - "@formatjs/intl-localematcher" "0.5.8" + "@formatjs/ecma402-abstract" "2.3.1" + "@formatjs/intl-localematcher" "0.5.9" tslib "2" "@humanwhocodes/config-array@^0.13.0": @@ -5027,7 +5028,7 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== -decimal.js@^10.4.2: +decimal.js@10, decimal.js@^10.4.2: version "10.4.3" resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.4.3.tgz#1044092884d245d1b7f65725fa4ad4c6f781cc23" integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA== From cf3bdbdc7aa9174228eb91a7a7b7658103f3d48e Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Dec 2024 14:25:56 +0000 Subject: [PATCH 16/20] Fix Read Receipt Test (#28719) * Update test snapshot as the date formatting appears to have gained a comma, and somehow got through the merge tests on the dependency bump. * Actually this was the problem --- .../components/views/rooms/ReadReceiptGroup-test.tsx | 8 ++++++++ .../rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/test/unit-tests/components/views/rooms/ReadReceiptGroup-test.tsx b/test/unit-tests/components/views/rooms/ReadReceiptGroup-test.tsx index ff89aa6942..13500f9b1f 100644 --- a/test/unit-tests/components/views/rooms/ReadReceiptGroup-test.tsx +++ b/test/unit-tests/components/views/rooms/ReadReceiptGroup-test.tsx @@ -10,6 +10,7 @@ import React, { ComponentProps } from "react"; import { render, screen, waitFor } from "jest-matrix-react"; import { RoomMember } from "matrix-js-sdk/src/matrix"; import userEvent from "@testing-library/user-event"; +import { mocked } from "jest-mock"; import { determineAvatarPosition, @@ -20,6 +21,9 @@ import * as languageHandler from "../../../../../src/languageHandler"; import { stubClient } from "../../../../test-utils"; import dispatcher from "../../../../../src/dispatcher/dispatcher"; import { Action } from "../../../../../src/dispatcher/actions"; +import { formatDate } from "../../../../../src/DateUtils"; + +jest.mock("../../../../../src/DateUtils"); describe("ReadReceiptGroup", () => { describe("TooltipText", () => { @@ -87,6 +91,10 @@ describe("ReadReceiptGroup", () => { describe("", () => { stubClient(); + // We pick a fixed time but this can still vary depending on the locale + // the tests are run in. We are not testing date formatting here, so stub it out. + mocked(formatDate).mockReturnValue("==MOCK FORMATTED DATE=="); + const ROOM_ID = "roomId"; const USER_ID = "@alice:example.org"; diff --git a/test/unit-tests/components/views/rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap b/test/unit-tests/components/views/rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap index b0ba944a66..60e8f844af 100644 --- a/test/unit-tests/components/views/rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap +++ b/test/unit-tests/components/views/rooms/__snapshots__/ReadReceiptGroup-test.tsx.snap @@ -84,7 +84,7 @@ exports[`ReadReceiptGroup should render 1`] = `

- Wed, 15 May, 0:00 + ==MOCK FORMATTED DATE==

From 8dff7581538af28e4e65e63d7228d0bfeb64282e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:02:47 +0000 Subject: [PATCH 17/20] Update definitelyTyped (#28704) Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/yarn.lock b/yarn.lock index 73c74ed8ff..c5ea5cdf7b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3048,9 +3048,9 @@ "@types/node" "*" "@types/jsrsasign@^10.5.4": - version "10.5.14" - resolved "https://registry.yarnpkg.com/@types/jsrsasign/-/jsrsasign-10.5.14.tgz#61d1dbd791ecd11db556c1ca5d82453fc7207338" - integrity sha512-lppSlfK6etu+cuKs40K4rg8As79PH6hzIB+v55zSqImbSH3SE6Fm8MBHCiI91cWlAP3Z4igtJK1VL3fSN09blQ== + version "10.5.15" + resolved "https://registry.yarnpkg.com/@types/jsrsasign/-/jsrsasign-10.5.15.tgz#5cf1ee506b2fa2435b6e1786a873285c7110eb82" + integrity sha512-3stUTaSRtN09PPzVWR6aySD9gNnuymz+WviNHoTb85dKu+BjaV4uBbWWGykBBJkfwPtcNZVfTn2lbX00U+yhpQ== "@types/katex@^0.16.0": version "0.16.7" @@ -3114,9 +3114,9 @@ undici-types "~6.20.0" "@types/node@18": - version "18.19.66" - resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.66.tgz#0937a47904ceba5994eedf5cf4b6d503d8d6136c" - integrity sha512-14HmtUdGxFUalGRfLLn9Gc1oNWvWh5zNbsyOLo5JV6WARSeN1QcEBKRnZm9QqNfrutgsl/hY4eJW63aZ44aBCg== + version "18.19.68" + resolved "https://registry.yarnpkg.com/@types/node/-/node-18.19.68.tgz#f4f10d9927a7eaf3568c46a6d739cc0967ccb701" + integrity sha512-QGtpFH1vB99ZmTa63K4/FU8twThj4fuVSBkGddTp7uIL/cuoLWIUSL2RcOaigBhfR+hg5pgGkBnkoOxrTVBMKw== dependencies: undici-types "~5.26.4" From a755e399cf818834a5ae403c6a1ea4ad2b38951e Mon Sep 17 00:00:00 2001 From: David Baker Date: Wed, 11 Dec 2024 19:00:24 +0000 Subject: [PATCH 18/20] Change to en-US locale for date tests (#28723) * Change to en-US locale for date tests As per comment. Fixes the tests. * Spell locale right Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> --------- Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> --- test/unit-tests/utils/DateUtils-test.ts | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/test/unit-tests/utils/DateUtils-test.ts b/test/unit-tests/utils/DateUtils-test.ts index 6112c19e4a..2007c8a05a 100644 --- a/test/unit-tests/utils/DateUtils-test.ts +++ b/test/unit-tests/utils/DateUtils-test.ts @@ -178,22 +178,26 @@ describe("formatDate", () => { it("should return time string if date is within same day", () => { const date = new Date(REPEATABLE_DATE.getTime() + 2 * HOUR_MS + 12 * MINUTE_MS); - expect(formatDate(date, false, "en-GB")).toMatchInlineSnapshot(`"19:10"`); + // We use en-US for these tests because there was a change in Node 22.12 which removed + // the comma after the weekday for en-GB which makes the test output different things + // on different node versions. I'm not sure what a better fix would be, so let's just use + // a locale that happens to have a more stable formatting right now. + expect(formatDate(date, false, "en-US")).toMatchInlineSnapshot(`"19:10"`); }); it("should return time string with weekday if date is within last 6 days", () => { const date = new Date(REPEATABLE_DATE.getTime() - 6 * DAY_MS + 2 * HOUR_MS + 12 * MINUTE_MS); - expect(formatDate(date, false, "en-GB")).toMatchInlineSnapshot(`"Fri 19:10"`); + expect(formatDate(date, false, "en-US")).toMatchInlineSnapshot(`"Fri 19:10"`); }); it("should return time & date string without year if it is within the same year", () => { const date = new Date(REPEATABLE_DATE.getTime() - 66 * DAY_MS + 2 * HOUR_MS + 12 * MINUTE_MS); - expect(formatDate(date, false, "en-GB")).toMatchInlineSnapshot(`"Mon, 12 Sept, 19:10"`); + expect(formatDate(date, false, "en-US")).toMatchInlineSnapshot(`"Mon, Sep 12, 19:10"`); }); it("should return full time & date string otherwise", () => { const date = new Date(REPEATABLE_DATE.getTime() - 666 * DAY_MS + 2 * HOUR_MS + 12 * MINUTE_MS); - expect(formatDate(date, false, "en-GB")).toMatchInlineSnapshot(`"Wed, 20 Jan 2021, 19:10"`); + expect(formatDate(date, false, "en-US")).toMatchInlineSnapshot(`"Wed, Jan 20, 2021, 19:10"`); }); }); From 2aa72bb40b3fd2625f51bc717693e5affa18e7b2 Mon Sep 17 00:00:00 2001 From: Florian Duros Date: Wed, 11 Dec 2024 20:35:59 +0100 Subject: [PATCH 19/20] Update `@vector-im/compound-web` to `7.5.0` (#28700) Co-authored-by: David Baker --- package.json | 2 +- .../window-12px-linux.png | Bin 68062 -> 68174 bytes .../theme-panel-custom-theme-added-linux.png | Bin 20261 -> 20516 bytes .../theme-panel-custom-theme-linux.png | Bin 16873 -> 17114 bytes ...theme-panel-custom-theme-removed-linux.png | Bin 18941 -> 19259 bytes .../theme-panel-dark-linux.png | Bin 9712 -> 9957 bytes .../theme-panel-light-linux.png | Bin 10197 -> 10445 bytes ...theme-panel-match-system-enabled-linux.png | Bin 9332 -> 9698 bytes .../RoomSummaryCard-test.tsx.snap | 9 +- .../LayoutSwitcher-test.tsx.snap | 26 ++-- .../ThemeChoicePanel-test.tsx.snap | 140 +++++++++--------- .../AppearanceUserSettingsTab-test.tsx.snap | 52 +++---- .../__snapshots__/SpacePanel-test.tsx.snap | 6 + .../ThreadsActivityCentre-test.tsx.snap | 9 +- yarn.lock | 18 +-- 15 files changed, 135 insertions(+), 127 deletions(-) diff --git a/package.json b/package.json index 6ab08023e8..9cd0163945 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,7 @@ "@matrix-org/spec": "^1.7.0", "@sentry/browser": "^8.0.0", "@vector-im/compound-design-tokens": "^2.0.1", - "@vector-im/compound-web": "^7.4.0", + "@vector-im/compound-web": "^7.5.0", "@vector-im/matrix-wysiwyg": "2.37.13", "@zxcvbn-ts/core": "^3.0.4", "@zxcvbn-ts/language-common": "^3.0.4", diff --git a/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-12px-linux.png b/playwright/snapshots/settings/appearance-user-settings-tab/appearance-user-settings-tab.spec.ts/window-12px-linux.png index b2b71375bd2a908c3259d5e057e265270f2aae12..41ffca6c93d9911ffc82ea687b1727d9f37563d5 100644 GIT binary patch delta 48589 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 GKK>80P9j+V delta 48459 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 literal 20261 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 diff --git a/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/theme-panel-custom-theme-removed-linux.png b/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/theme-panel-custom-theme-removed-linux.png index 1ec17661fe4f561d5a51eee6e3e608f0e6c0f20c..23b88c022c86abef6e6066cb04d5670690862e5a 100644 GIT binary patch literal 19259 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%0AC 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 literal 18941 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 Gp$P!0#0GEx diff --git a/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/theme-panel-dark-linux.png b/playwright/snapshots/settings/appearance-user-settings-tab/theme-choice-panel.spec.ts/theme-panel-dark-linux.png index 75db794a1a38b5be82ba6db5bd57581c47540ec3..6378098d7ac99bc2cec0392e7fa1aa096a1faec4 100644 GIT binary patch literal 9957 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 Ze0J=cBE5k!01<;ga?;9g5Ku$E{{=?k98UlM literal 10197 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 literal 9332 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 has button to edit topic 1`] = ` style="--mx-box-flex: 1;" >

renders the room summary 1`] = ` style="--mx-box-flex: 1;" >

renders the room topic in the summary 1`] = ` style="--mx-box-flex: 1;" >

should render 1`] = ` class="mx_SettingsSubsection_content mx_SettingsSubsection_content_newUi" >