Pluralise the multi-session remove button and confirmation dialog (#33983)
* Pluralise the multi-session remove button and confirmation dialog When several sessions are selected in Settings > Sessions, the bulk remove button and its confirmation dialog used the singular "Remove this device" string. The singular "this" misleadingly implied the current device would be removed. Use the existing count-aware settings|sessions|sign_out_n_sessions key, matching the other-sessions menu, so the label reads "Remove N sessions". Fixes #33812 * Update device-management e2e test for the pluralised remove button The multi-select remove button now reads "Remove N sessions" instead of "Remove this device", so update the Playwright assertion to match. * Put "Cancel" before "Remove N sessions" in the bulk session action bar In the "Other sessions" multi-select action bar, "Remove N sessions" was rendered before "Cancel", which placed the destructive action on the left. Swap the two buttons so "Cancel" is on the left and "Remove N sessions" on the right, per review feedback on #33983.
This commit is contained in:
@@ -59,7 +59,7 @@ test.describe("Device manager", () => {
|
|||||||
await filteredDeviceListItems.last().click({ force: true });
|
await filteredDeviceListItems.last().click({ force: true });
|
||||||
|
|
||||||
// sign out from list selection action buttons
|
// sign out from list selection action buttons
|
||||||
await tab.getByRole("button", { name: "Remove this device", exact: true }).click();
|
await tab.getByRole("button", { name: "Remove 2 sessions", exact: true }).click();
|
||||||
await page.getByRole("dialog").getByTestId("dialog-primary-button").click();
|
await page.getByRole("dialog").getByTestId("dialog-primary-button").click();
|
||||||
|
|
||||||
// list updated after sign out
|
// list updated after sign out
|
||||||
|
|||||||
@@ -323,16 +323,6 @@ export const FilteredDeviceList = ({
|
|||||||
>
|
>
|
||||||
{selectedDeviceIds.length ? (
|
{selectedDeviceIds.length ? (
|
||||||
<>
|
<>
|
||||||
<AccessibleButton
|
|
||||||
data-testid="sign-out-selection-cta"
|
|
||||||
kind="danger_inline"
|
|
||||||
disabled={isSigningOut}
|
|
||||||
onClick={() => onSignOutDevices(selectedDeviceIds)}
|
|
||||||
className="mx_FilteredDeviceList_headerButton"
|
|
||||||
>
|
|
||||||
{isSigningOut && <Spinner size={16} />}
|
|
||||||
{_t("action|sign_out")}
|
|
||||||
</AccessibleButton>
|
|
||||||
<AccessibleButton
|
<AccessibleButton
|
||||||
data-testid="cancel-selection-cta"
|
data-testid="cancel-selection-cta"
|
||||||
kind="content_inline"
|
kind="content_inline"
|
||||||
@@ -342,6 +332,16 @@ export const FilteredDeviceList = ({
|
|||||||
>
|
>
|
||||||
{_t("action|cancel")}
|
{_t("action|cancel")}
|
||||||
</AccessibleButton>
|
</AccessibleButton>
|
||||||
|
<AccessibleButton
|
||||||
|
data-testid="sign-out-selection-cta"
|
||||||
|
kind="danger_inline"
|
||||||
|
disabled={isSigningOut}
|
||||||
|
onClick={() => onSignOutDevices(selectedDeviceIds)}
|
||||||
|
className="mx_FilteredDeviceList_headerButton"
|
||||||
|
>
|
||||||
|
{isSigningOut && <Spinner size={16} />}
|
||||||
|
{_t("settings|sessions|sign_out_n_sessions", { count: selectedDeviceIds.length })}
|
||||||
|
</AccessibleButton>
|
||||||
</>
|
</>
|
||||||
) : (
|
) : (
|
||||||
<FilterDropdown<DeviceFilterKey>
|
<FilterDropdown<DeviceFilterKey>
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ const LoginWithQR = lazy(() => import("../../../auth/LoginWithQR"));
|
|||||||
|
|
||||||
const confirmSignOut = async (sessionsToSignOutCount: number): Promise<boolean> => {
|
const confirmSignOut = async (sessionsToSignOutCount: number): Promise<boolean> => {
|
||||||
const { finished } = Modal.createDialog(QuestionDialog, {
|
const { finished } = Modal.createDialog(QuestionDialog, {
|
||||||
title: _t("action|sign_out"),
|
title: _t("settings|sessions|sign_out_n_sessions", { count: sessionsToSignOutCount }),
|
||||||
description: (
|
description: (
|
||||||
<div>
|
<div>
|
||||||
<p>
|
<p>
|
||||||
@@ -51,7 +51,7 @@ const confirmSignOut = async (sessionsToSignOutCount: number): Promise<boolean>
|
|||||||
</div>
|
</div>
|
||||||
),
|
),
|
||||||
cancelButton: _t("action|cancel"),
|
cancelButton: _t("action|cancel"),
|
||||||
button: _t("action|sign_out"),
|
button: _t("settings|sessions|sign_out_n_sessions", { count: sessionsToSignOutCount }),
|
||||||
});
|
});
|
||||||
const [confirmed] = await finished;
|
const [confirmed] = await finished;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user