Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions playwright/e2e/crypto/device-verification.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,8 @@ test.describe("Device verification", { tag: "@no-webkit" }, () => {

// Fill the passphrase
const dialog = page.locator(".mx_Dialog");
await dialog.locator("input").fill("new passphrase");
await dialog.locator(".mx_Dialog_primary:not([disabled])", { hasText: "Continue" }).click();
await dialog.locator("textarea").fill("new passphrase");
await dialog.getByRole("button", { name: "Continue", disabled: false }).click();

await page.locator(".mx_AuthPage").getByRole("button", { name: "Done" }).click();

Expand All @@ -190,10 +190,9 @@ test.describe("Device verification", { tag: "@no-webkit" }, () => {

// Fill the recovery key
const dialog = page.locator(".mx_Dialog");
await dialog.getByRole("button", { name: "use your Recovery Key" }).click();
const aliceRecoveryKey = await aliceBotClient.getRecoveryKey();
await dialog.locator("#mx_securityKey").fill(aliceRecoveryKey.encodedPrivateKey);
await dialog.locator(".mx_Dialog_primary:not([disabled])", { hasText: "Continue" }).click();
await dialog.locator("textarea").fill(aliceRecoveryKey.encodedPrivateKey);
await dialog.getByRole("button", { name: "Continue", disabled: false }).click();

await page.locator(".mx_AuthPage").getByRole("button", { name: "Done" }).click();

Expand Down
6 changes: 3 additions & 3 deletions playwright/e2e/crypto/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -228,8 +228,8 @@ export async function logIntoElement(page: Page, credentials: Credentials, secur
await useSecurityKey.click();
}
// Fill in the recovery key
await page.locator(".mx_Dialog").locator('input[type="password"]').fill(securityKey);
await page.locator(".mx_Dialog_primary:not([disabled])", { hasText: "Continue" }).click();
await page.locator(".mx_Dialog").locator("textarea").fill(securityKey);
await page.getByRole("button", { name: "Continue", disabled: false }).click();
await page.getByRole("button", { name: "Done" }).click();
}
}
Expand Down Expand Up @@ -263,7 +263,7 @@ export async function verifySession(app: ElementAppPage, securityKey: string) {
const settings = await app.settings.openUserSettings("Encryption");
await settings.getByRole("button", { name: "Verify this device" }).click();
await app.page.getByRole("button", { name: "Verify with Recovery Key" }).click();
await app.page.locator(".mx_Dialog").locator('input[type="password"]').fill(securityKey);
await app.page.locator(".mx_Dialog").locator("textarea").fill(securityKey);
await app.page.getByRole("button", { name: "Continue", disabled: false }).click();
await app.page.getByRole("button", { name: "Done" }).click();
await app.settings.closeDialog();
Expand Down
1 change: 1 addition & 0 deletions res/css/_common.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -601,6 +601,7 @@ legend {
.mx_Dialog_nonDialogButton,
.mx_AccessibleButton,
.mx_IdentityServerPicker button,
.mx_AccessSecretStorageDialog button,
[class|="maplibregl"]
),
.mx_Dialog_buttons button:not(.mx_Dialog_nonDialogButton, .mx_AccessibleButton),
Expand Down
110 changes: 8 additions & 102 deletions res/css/views/dialogs/security/_AccessSecretStorageDialog.pcss
Original file line number Diff line number Diff line change
Expand Up @@ -7,62 +7,14 @@ Please see LICENSE files in the repository root for full details.
*/

.mx_AccessSecretStorageDialog {
.mx_AccessSecretStorageDialog_titleWithIcon {
&::before {
content: "";
display: inline-block;
width: 24px;
height: 24px;
margin-inline-end: $spacing-8;
position: relative;
top: 5px;
background-color: $primary-content;
}

&.mx_AccessSecretStorageDialog_resetBadge::before {
/* The image isn't capable of masking, so we use a background instead. */
background-image: url("@vector-im/compound-design-tokens/icons/error-solid.svg");
background-size: 24px;
background-color: transparent;
}

&.mx_AccessSecretStorageDialog_secureBackupTitle::before {
mask-image: url("$(res)/img/feather-customised/secure-backup.svg");
}

&.mx_AccessSecretStorageDialog_securePhraseTitle::before {
mask-image: url("$(res)/img/feather-customised/secure-phrase.svg");
}
&.mx_EncryptionCard {
/* override some styles that we don't need */
border: 0px none;
box-shadow: none;
padding: 0px;
}

.mx_AccessSecretStorageDialog_primaryContainer {
.mx_AccessSecretStorageDialog_passPhraseInput {
width: 300px;
border: 1px solid $accent;
border-radius: 5px;
}

.mx_AccessSecretStorageDialog_keyStatus {
height: 30px;
}

.mx_AccessSecretStorageDialog_recoveryKeyEntry {
display: flex;
align-items: center;

.mx_AccessSecretStorageDialog_recoveryKeyEntry_textInput {
flex-grow: 1;
}

.mx_AccessSecretStorageDialog_recoveryKeyEntry_entryControlSeparatorText {
margin: $spacing-16;
}

.mx_AccessSecretStorageDialog_recoveryKeyEntry_fileInput {
display: none;
}
}

.mx_AccessSecretStorageDialog_recoveryKeyFeedback {
&::before {
content: "";
Expand All @@ -76,15 +28,6 @@ Please see LICENSE files in the repository root for full details.
margin-inline-end: 5px;
}

&.mx_AccessSecretStorageDialog_recoveryKeyFeedback--valid {
color: $accent;

&::before {
mask-image: url("@vector-im/compound-design-tokens/icons/check.svg");
background-color: $accent;
}
}

&.mx_AccessSecretStorageDialog_recoveryKeyFeedback--invalid {
color: $alert;

Expand All @@ -94,46 +37,9 @@ Please see LICENSE files in the repository root for full details.
}
}
}
}

.mx_Dialog_buttons {
$spacingStart: $spacing-24; /* 16px icon + 8px padding */

text-align: initial;
display: flex;
flex-flow: column;
gap: 14px;

.mx_Dialog_buttons_additive {
float: none;

.mx_AccessSecretStorageDialog_reset {
position: relative;
padding-inline-start: $spacingStart;
/* To avoid bold styling inherent with <strong> elements */
font-weight: inherit;

&::before {
content: "";
display: inline-block;
position: absolute;
height: 16px;
width: 16px;
left: 0;
top: 2px; /* alignment */
background-image: url("@vector-im/compound-design-tokens/icons/error-solid.svg");
background-size: contain;
}

.mx_AccessSecretStorageDialog_reset_link {
color: $alert;
}
}
}

.mx_Dialog_buttons_row {
gap: $spacing-16; /* TODO: needs normalization */
padding-inline-start: $spacingStart;
}
}
.mx_EncryptionCard_buttons {
margin-top: var(--cpd-space-20x);
}
}
Loading