fix(downloads): confirm dialogs name the action on their confirm button

The download center's confirm button repeated the dialog's question
("Re-download this file?"). It now reads the action: Stop download,
Re-download, Remove, Remove from my list.
This commit is contained in:
2026-09-13 23:38:11 +02:00
parent 90ee34a1b4
commit b17d92d7c2
3 changed files with 14 additions and 4 deletions
+8 -2
View File
@@ -109,8 +109,10 @@ export default function DownloadCenter() {
meta: { failTitle: "errors.writeFailed.removeShared" }, meta: { failTitle: "errors.writeFailed.removeShared" },
}); });
const confirmThen = async (title: string, body: string, fn: () => void) => { // The confirm button names the ACTION ("Remove"), never the dialog's question: labelled with the title
if (await confirm({ title, message: body, confirmLabel: title, danger: true })) fn(); // it read "Re-download this file?", and the cancel dialog's own "Cancel" would sit beside "Cancel".
const confirmThen = async (title: string, body: string, action: string, fn: () => void) => {
if (await confirm({ title, message: body, confirmLabel: action, danger: true })) fn();
}; };
// One-click share (E7 S3 · D2-A): ensure a downloadable link, copy it, toast with "open in new tab" // One-click share (E7 S3 · D2-A): ensure a downloadable link, copy it, toast with "open in new tab"
@@ -254,6 +256,7 @@ export default function DownloadCenter() {
confirmThen( confirmThen(
t("downloads.confirm.cancelTitle"), t("downloads.confirm.cancelTitle"),
t("downloads.confirm.cancelBody"), t("downloads.confirm.cancelBody"),
t("downloads.confirm.cancelAction"),
() => act.mutate({ id: job.id, op: "cancel" }), () => act.mutate({ id: job.id, op: "cancel" }),
) )
} }
@@ -327,6 +330,7 @@ export default function DownloadCenter() {
confirmThen( confirmThen(
t("downloads.confirm.redownloadTitle"), t("downloads.confirm.redownloadTitle"),
t("downloads.confirm.redownloadBody"), t("downloads.confirm.redownloadBody"),
t("downloads.confirm.redownloadAction"),
() => act.mutate({ id: job.id, op: "redownload" }), () => act.mutate({ id: job.id, op: "redownload" }),
) )
} }
@@ -340,6 +344,7 @@ export default function DownloadCenter() {
confirmThen( confirmThen(
t("downloads.confirm.deleteTitle"), t("downloads.confirm.deleteTitle"),
t("downloads.confirm.deleteBody"), t("downloads.confirm.deleteBody"),
t("downloads.actions.delete"),
() => act.mutate({ id: job.id, op: "delete" }), () => act.mutate({ id: job.id, op: "delete" }),
) )
} }
@@ -394,6 +399,7 @@ export default function DownloadCenter() {
confirmThen( confirmThen(
t("downloads.confirm.removeSharedTitle"), t("downloads.confirm.removeSharedTitle"),
t("downloads.confirm.removeSharedBody"), t("downloads.confirm.removeSharedBody"),
t("downloads.actions.removeShared"),
() => removeShared.mutate(job.id), () => removeShared.mutate(job.id),
) )
} }
+3 -1
View File
@@ -152,12 +152,14 @@
"confirm": { "confirm": {
"cancelTitle": "Cancel download?", "cancelTitle": "Cancel download?",
"cancelBody": "This stops the download and removes it from your queue.", "cancelBody": "This stops the download and removes it from your queue.",
"cancelAction": "Stop download",
"deleteTitle": "Remove download?", "deleteTitle": "Remove download?",
"deleteBody": "This removes it from your list. The file may stay cached for other users until it expires.", "deleteBody": "This removes it from your list. The file may stay cached for other users until it expires.",
"removeSharedTitle": "Remove from your list?", "removeSharedTitle": "Remove from your list?",
"removeSharedBody": "This removes it from your shared list only — it won't delete the owner's file.", "removeSharedBody": "This removes it from your shared list only — it won't delete the owner's file.",
"redownloadTitle": "Re-download this file?", "redownloadTitle": "Re-download this file?",
"redownloadBody": "The current file is deleted and downloaded again under the latest format and naming rules. Any share links you've sent keep working and will point to the new file (a failed re-download leaves the link broken)." "redownloadBody": "The current file is deleted and downloaded again under the latest format and naming rules. Any share links you've sent keep working and will point to the new file (a failed re-download leaves the link broken).",
"redownloadAction": "Re-download"
}, },
"profiles": { "profiles": {
"manage": "Manage formats", "manage": "Manage formats",
+3 -1
View File
@@ -152,12 +152,14 @@
"confirm": { "confirm": {
"cancelTitle": "Megszakítod a letöltést?", "cancelTitle": "Megszakítod a letöltést?",
"cancelBody": "Ez leállítja a letöltést és eltávolítja a sorból.", "cancelBody": "Ez leállítja a letöltést és eltávolítja a sorból.",
"cancelAction": "Letöltés leállítása",
"deleteTitle": "Eltávolítod a letöltést?", "deleteTitle": "Eltávolítod a letöltést?",
"deleteBody": "Ez eltávolítja a listádról. A fájl a lejáratáig még a gyorsítótárban maradhat mások számára.", "deleteBody": "Ez eltávolítja a listádról. A fájl a lejáratáig még a gyorsítótárban maradhat mások számára.",
"removeSharedTitle": "Eltávolítod a listádból?", "removeSharedTitle": "Eltávolítod a listádból?",
"removeSharedBody": "Csak a te megosztott listádból tűnik el — a tulajdonos fájlját nem törli.", "removeSharedBody": "Csak a te megosztott listádból tűnik el — a tulajdonos fájlját nem törli.",
"redownloadTitle": "Újratöltöd ezt a fájlt?", "redownloadTitle": "Újratöltöd ezt a fájlt?",
"redownloadBody": "A jelenlegi fájl törlődik és újra letöltődik a legfrissebb formátum- és elnevezési szabályokkal. A már elküldött megosztási linkek működnek tovább, és az új fájlra fognak mutatni (sikertelen újratöltés esetén a link törötten marad)." "redownloadBody": "A jelenlegi fájl törlődik és újra letöltődik a legfrissebb formátum- és elnevezési szabályokkal. A már elküldött megosztási linkek működnek tovább, és az új fájlra fognak mutatni (sikertelen újratöltés esetén a link törötten marad).",
"redownloadAction": "Újratöltés"
}, },
"profiles": { "profiles": {
"manage": "Formátumok kezelése", "manage": "Formátumok kezelése",