diff --git a/src/components/views/settings/tabs/user/EncryptionUserSettingsTab.tsx b/src/components/views/settings/tabs/user/EncryptionUserSettingsTab.tsx index 0b4b27e9d0..2a041a04c8 100644 --- a/src/components/views/settings/tabs/user/EncryptionUserSettingsTab.tsx +++ b/src/components/views/settings/tabs/user/EncryptionUserSettingsTab.tsx @@ -102,20 +102,12 @@ export function EncryptionUserSettingsTab({ initialState = "loading" }: Encrypti ); break; case "reset_identity_compromised": - content = ( - setState("main")} - onFinish={() => setState("main")} - /> - ); - break; case "reset_identity_forgot": content = ( setState("main")} - onFinish={() => setState("main")} + variant={state === "reset_identity_compromised" ? "compromised" : "forgot"} + onCancelClick={checkEncryptionState} + onFinish={checkEncryptionState} /> ); break; diff --git a/test/unit-tests/components/views/settings/tabs/user/EncryptionUserSettingsTab-test.tsx b/test/unit-tests/components/views/settings/tabs/user/EncryptionUserSettingsTab-test.tsx index 9137140c79..536dadf305 100644 --- a/test/unit-tests/components/views/settings/tabs/user/EncryptionUserSettingsTab-test.tsx +++ b/test/unit-tests/components/views/settings/tabs/user/EncryptionUserSettingsTab-test.tsx @@ -144,4 +144,30 @@ describe("", () => { screen.getByRole("heading", { name: "Forgot your recovery key? You’ll need to reset your identity." }), ).toBeVisible(); }); + + it("should re-check the encryption state and displays the correct panel when the user clicks cancel the reset identity flow", async () => { + const user = userEvent.setup(); + + // Secrets are not cached + jest.spyOn(matrixClient.getCrypto()!, "getCrossSigningStatus").mockResolvedValue({ + privateKeysInSecretStorage: true, + publicKeysOnDevice: true, + privateKeysCachedLocally: { + masterKey: false, + selfSigningKey: true, + userSigningKey: true, + }, + }); + + renderComponent({ initialState: "reset_identity_forgot" }); + + expect( + screen.getByRole("heading", { name: "Forgot your recovery key? You’ll need to reset your identity." }), + ).toBeVisible(); + + await user.click(screen.getByRole("button", { name: "Back" })); + await waitFor(() => + screen.getByText("Your key storage is out of sync. Click one of the buttons below to fix the problem."), + ); + }); });