fix(notifications): a notice's button is said when shown, like its text
An action label was translated when the notice was raised, so after a language switch a live toast or center row read in one language with its button in the other. The access-requests nudge no longer re-issues on a switch for it. New tests: the button and a server refusal follow a switch.
This commit is contained in:
@@ -219,8 +219,8 @@ describe("Toaster — a toast's actions", () => {
|
||||
void notify({
|
||||
level: "success",
|
||||
message: raw("Downloaded"),
|
||||
action: { label: "Copy link", onClick: copy },
|
||||
secondaryAction: { label: "Open", onClick: open },
|
||||
action: { label: raw("Copy link"), onClick: copy },
|
||||
secondaryAction: { label: raw("Open"), onClick: open },
|
||||
}),
|
||||
);
|
||||
expect(screen.getByRole("button", { name: "Copy link" })).toBeTruthy();
|
||||
|
||||
@@ -32,6 +32,37 @@ describe("a notice speaks the reader's language of the moment", () => {
|
||||
expect(screen.queryByText(en)).toBeNull();
|
||||
});
|
||||
|
||||
it("its button is said again too, beside the text it acts on", async () => {
|
||||
render(<Toaster />);
|
||||
act(
|
||||
() =>
|
||||
void notify({
|
||||
message: msg("common.copy.done"),
|
||||
action: { label: msg("common.undo"), onClick: () => {} },
|
||||
}),
|
||||
);
|
||||
expect(screen.getByRole("button", { name: "Undo" })).toBeTruthy();
|
||||
|
||||
await act(async () => void (await i18n.changeLanguage("hu")));
|
||||
expect(screen.getByRole("button", { name: "Visszavonás" })).toBeTruthy();
|
||||
expect(screen.queryByRole("button", { name: "Undo" })).toBeNull();
|
||||
});
|
||||
|
||||
it("a server refusal is said again in the language of the moment", async () => {
|
||||
render(<Toaster />);
|
||||
act(
|
||||
() =>
|
||||
void notify({
|
||||
level: "error",
|
||||
message: { detail: { code: "not_found", reason: "view" } },
|
||||
}),
|
||||
);
|
||||
expect(screen.getByText("This view doesn't exist any more")).toBeTruthy();
|
||||
|
||||
await act(async () => void (await i18n.changeLanguage("hu")));
|
||||
expect(screen.getByText("Ez a nézet már nem létezik")).toBeTruthy();
|
||||
});
|
||||
|
||||
it("a value inside the text is said again too, and a number is grouped the reader's way", async () => {
|
||||
const text = msg("settings.takeout.read", {
|
||||
name: raw("watch-history.json"),
|
||||
|
||||
@@ -176,10 +176,10 @@ export default function Toaster({
|
||||
{(toast.action || toast.secondaryAction) && (
|
||||
<div className="mt-1 flex flex-wrap gap-x-4">
|
||||
{[toast.action, toast.secondaryAction].map(
|
||||
(action) =>
|
||||
(action, i) =>
|
||||
action && (
|
||||
<Button
|
||||
key={action.label}
|
||||
key={i}
|
||||
variant="link"
|
||||
onClick={() => {
|
||||
action.onClick();
|
||||
@@ -187,7 +187,7 @@ export default function Toaster({
|
||||
}}
|
||||
className="text-sm"
|
||||
>
|
||||
{action.label}
|
||||
{sayNotif(action.label, t)}
|
||||
</Button>
|
||||
),
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user