Wire up the "Forgot recovery key" button for the "Key storage out of sync" toast#29138
Conversation
| const recheckSetupRequired = useCallback(() => { | ||
| (async () => { | ||
| const crypto = matrixClient.getCrypto()!; | ||
| const isCrossSigningReady = await crypto.isCrossSigningReady(); | ||
| if (isCrossSigningReady) { | ||
| setState("main"); | ||
| } else { | ||
| setState("set_up_encryption"); | ||
| } | ||
| })(); | ||
| }, [matrixClient]); |
There was a problem hiding this comment.
I'm in favour to use a custom hook like useSetUpEncryptionRequired before. It helps the readability of the component imo
There was a problem hiding this comment.
Something like this? I find the custom hook a bit awkward in this scenario since you have to pass a lot of functions around, but I don't mind too much.
| if (isCrossSigningReady) { | ||
| setState("main"); | ||
| } else { | ||
| setState("set_up_encryption"); | ||
| } |
There was a problem hiding this comment.
| if (isCrossSigningReady) { | |
| setState("main"); | |
| } else { | |
| setState("set_up_encryption"); | |
| } | |
| if (isCrossSigningReady) setState("main"); | |
| else setState("set_up_encryption"); |
There was a problem hiding this comment.
I'd really rather not if at all possible: I find these line-ifs split over multiple lines very confusing, and I think our code style permits line ifs only if they're one single line.
| import { registerAccountMas } from "../oidc"; | ||
| import { deleteCachedSecrets } from "./utils"; | ||
|
|
||
| test.use(masHomeserver); |
| test.beforeEach(async ({ page, app, mailpitClient }) => { | ||
| await page.goto("/#/login"); | ||
| await page.getByRole("button", { name: "Continue" }).click(); | ||
| await registerAccountMas(page, mailpitClient, "alice", "alice@email.com", "Pa$sW0rD!"); | ||
|
|
||
| await expect(page.getByRole("heading", { level: 1, name: "Welcome alice" })).toBeVisible(); | ||
|
|
||
| // We won't be prompted for crypto setup unless we have na e2e room, so make one | ||
| await page.getByRole("button", { name: "Add room" }).click(); | ||
| await page.getByRole("menuitem", { name: "New room" }).click(); | ||
| await page.getByRole("textbox", { name: "Name" }).fill("Test room"); | ||
| await page.getByRole("button", { name: "Create room" }).click(); | ||
|
|
||
| // Now set up recovery (otherwise we'll delete the only copy of the secret) | ||
| await page.getByLabel("User menu").click(); | ||
| await page.getByLabel("All settings").click(); | ||
| await page.getByRole("tab", { name: "Encryption" }).click(); | ||
| await page.getByRole("button", { name: "Set up recovery" }).click(); | ||
| await page.getByRole("button", { name: "Continue" }).click(); | ||
| recoveryKey = await page.getByTestId("recoveryKey").textContent(); | ||
| await page.getByRole("button", { name: "Continue" }).click(); | ||
| await page.getByRole("textbox", { name: "Enter recovery key" }).fill(recoveryKey); | ||
| await page.getByRole("button", { name: "Finish set up" }).click(); | ||
|
|
||
| await expect(page.getByRole("button", { name: "Change recovery key" })).toBeVisible(); |
There was a problem hiding this comment.
Can't we use crypto/utils#createBot to create a second session, bootstrap cross singing and create a recovery key?
crypto/utils#verifySession can be used to verify the current session too
There was a problem hiding this comment.
It took a bit but I think this is working with the bot client now.
uhoreg
left a comment
There was a problem hiding this comment.
From a crypto point of view, looks OK
Co-authored-by: Florian Duros <florianduros@element.io>
…tofsync_forgotpassword
…sync" toast (#29138) * Wire up the "Forgot recovery key" button for the "Key storage out of sync" toast * Unused import & fix test * Test 'forgot' variant * Fix dependencies * Add more toast tests * Unused import * Test initialState in Encryption Tab * Let's see if github has any more luck running this test than me * Working playwright test with screenshot * year * Convert playwright test to use the bot client * Disambiguate Co-authored-by: Florian Duros <florianduros@element.io> * Add doc & do other part of rename * Split out into custom hook * Fix tests --------- Co-authored-by: Florian Duros <florianduros@element.io> (cherry picked from commit 9657d39)
|
"Wire up", but what actually happens? can we get some screenshots or something? |
| import { test, expect } from "../../element-web-test"; | ||
| import { createBot, deleteCachedSecrets, logIntoElement } from "./utils"; | ||
|
|
||
| test.describe("Key storage out of sync toast", () => { |
There was a problem hiding this comment.
(don't we already have some tests for this toast somewhere else?)
There was a problem hiding this comment.
I don't think so - maybe the backup failure screen is what you're thinking of?
…Key storage out of sync" toast (#29190) * Wire up the "Forgot recovery key" button for the "Key storage out of sync" toast (#29138) * Wire up the "Forgot recovery key" button for the "Key storage out of sync" toast * Unused import & fix test * Test 'forgot' variant * Fix dependencies * Add more toast tests * Unused import * Test initialState in Encryption Tab * Let's see if github has any more luck running this test than me * Working playwright test with screenshot * year * Convert playwright test to use the bot client * Disambiguate Co-authored-by: Florian Duros <florianduros@element.io> * Add doc & do other part of rename * Split out into custom hook * Fix tests --------- Co-authored-by: Florian Duros <florianduros@element.io> (cherry picked from commit 9657d39) * Update fetchdep.sh to understand merge queues --------- Co-authored-by: David Baker <dbkr@users.noreply.github.com> Co-authored-by: Michael Telatynski <7t3chguy@gmail.com>
|
Have opened #29503 to address the feedback that came in afterwards. |
* Rename props & fix typo * Docs * Better docs * Add comment * Fix typo * Paragraphs in tsdoc * Add comment * Hopefully clearer comment * Really fix typo Co-authored-by: Will Hunt <will@half-shot.uk> * Stray word Co-authored-by: Andy Balaam <andy.balaam@matrix.org> * Hopefully clearer comment * Typo * Formatting & clarity Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> --------- Co-authored-by: Will Hunt <will@half-shot.uk> Co-authored-by: Andy Balaam <andy.balaam@matrix.org> Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com>
Fixes #29118 by making the 'forgot recovery key' button take you into settings to the flow to reset your recovery key.
Checklist
public/exportedsymbols have accurate TSDoc documentation.