ux: upload: make clearer that selected files are not being uploaded yet

Massimo Melina committed May 9, 2026 at 13:26 UTC f4b3125c483fbb60b3f9e03781ba8db6f275002e
29 files changed +66 -36
e2e/serial.spec.ts
+1 -1
@@ -48,7 +48,7 @@ test('upload1', async ({ page, context, browserName }, testInfo) => {
48 await renameDialog.getByRole('button', { name: 'Continue' }).click()
49 await expect(page.getByText(uploadName)).toBeVisible() // rename was effective
50 // we send the upload, slowly, so that we can interrupt it in the admin-panel to test the upload resume
51 - await page.getByRole('button', { name: 'Send 1 file' }).click()
51 + await page.getByRole('button', { name: 'Send' }).click()
52 const uploadCells = pageAdmin.locator('.MuiDataGrid-cell')
53 .filter({ hasText: uploadName })
54 .filter({ hasText: '/for-admins/upload' })
frontend/src/upload.ts
+11 -8
@@ -82,14 +82,17 @@ export function showUpload() {
82 !isMobile && h(Flex, { gap: 4 }, hIcon('info'), t('upload_dd_hint', "You can upload files by dragging and dropping them onto the file list")),
83 h(UploadStatus, { margin: '.5em 0' }),
84 adding.length > 0 && h(Flex, { center: true, flexWrap: 'wrap' },
85 - h('button', {
86 - className: 'upload-send',
87 - onClick() {
88 - void enqueueUpload(uploadState.adding)
89 - clear()
90 - }
91 - }, t('send_files', { n: adding.length, size }, "Send {n,plural,one{# file} other{# files}}, {size}")),
92 - h('button', { onClick: clear }, t`Clear`),
85 + t('ready_to_upload', { n: adding.length, size }, "{n,plural,one{# file} other{# files}}, {size}, ready to upload"),
86 + h(Flex, {}, // avoid just one button to wrap
87 + h('button', {
88 + className: 'upload-send',
89 + onClick() {
90 + void enqueueUpload(uploadState.adding)
91 + clear()
92 + }
93 + }, t`Send`),
94 + h('button', { onClick: clear }, t`Clear`),
95 + ),
96 )
97 ),
98 ),
src/langs/hfs-lang-ar.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "إنشاء مجلد",
60 "Pick files": "اختر ملفات",
61 "Pick folder": "اختر مجلدًا",
62 - "send_files": "Send {n,plural,one{# file} other{# files}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# file} other{# files}}, {size}، جاهز للرفع",
63 + "Send": "إرسال",
64 "Clear": "مسح",
65 "failed_upload": "تعذر رفع {name}",
66 "confirm_resume": "استئناف الرفع؟",
src/langs/hfs-lang-bg.json
+2 -1
@@ -58,7 +58,8 @@
58 "Create folder": "Създай папка",
59 "Pick files": "Избери файлове",
60 "Pick folder": "Избери папка",
61 - "send_files": "Изпрати {n,plural,one{# файл} other{# файла}}, {size}",
61 + "ready_to_upload": "{n,plural,one{# файл} other{# файла}}, {size}, готови за качване",
62 + "Send": "Изпрати",
63 "Clear": "Изчисти",
64 "failed_upload": "Неуспешно качване на {name}",
65 "file too large": "файлът е твърде голям",
src/langs/hfs-lang-de.json
+2 -1
@@ -57,7 +57,8 @@
57 "Create folder": "Ordner erstellen",
58 "Pick files": "Dateien auswählen",
59 "Pick folder": "Ordner auswählen",
60 - "send_files": "{n,plural,one{# Datei} other{# Dateien}} senden, {size}",
60 + "ready_to_upload": "{n,plural,one{# Datei} other{# Dateien}}, {size}, bereit zum Hochladen",
61 + "Send": "Senden",
62 "Clear": "Löschen",
63 "failed_upload": "Konnte {name} nicht hochladen.",
64 "confirm_resume": "Upload fortsetzen?",
src/langs/hfs-lang-el.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Δημιουργία φακέλου",
60 "Pick files": "Επιλογή αρχείων",
61 "Pick folder": "Επιλογή φακέλου",
62 - "send_files": "Αποστολή {n,plural,one{# αρχείο} other{# αρχεία}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# αρχείο} other{# αρχεία}}, {size}, έτοιμα για αποστολή",
63 + "Send": "Αποστολή",
64 "Clear": "Καθαρισμός",
65 "failed_upload": "Αποτυχία μεταφόρτωσης του {name}",
66 "confirm_resume": "Συνέχεια της μεταφόρτωσης;",
src/langs/hfs-lang-en.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Create folder",
60 "Pick files": "Pick files",
61 "Pick folder": "Pick folder",
62 - "send_files": "Send {n,plural,one{# file} other{# files}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# file} other{# files}}, {size}, ready to upload",
63 + "Send": "Send",
64 "Clear": "Clear",
65 "failed_upload": "Couldn't upload {name}",
66 "file too large": "file too large",
src/langs/hfs-lang-es.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Crear carpeta",
60 "Pick files": "Seleccionar archivo",
61 "Pick folder": "Seleccionar carpeta",
62 - "send_files": "Enviar {n,plural,one {# archivo} other{# archivos}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# archivo} other{# archivos}}, {size}, listo para subir",
63 + "Send": "Enviar",
64 "Clear": "Limpiar",
65 "failed_upload": "No se puede subir {name}",
66 "confirm_resume": "Continuar subida?",
src/langs/hfs-lang-fi.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Tee uusi kansio",
60 "Pick files": "Valitse lähetettävät tiedostot",
61 "Pick folder": "Valitse lähetettävä kansio",
62 - "send_files": "Lähetä {n,plural,one{# tiedosto} other{# tiedostot}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# tiedosto} other{# tiedostot}}, {size}, valmis ladattavaksi",
63 + "Send": "Lähetä",
64 "Clear": "Tyhjennä",
65 "failed_upload": "Lähetys epäonnistui {name}",
66 "confirm_resume": "Jatketaanko lähetystä?",
src/langs/hfs-lang-fr.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Créez un dossier",
60 "Pick files": "Choisissez les fichiers",
61 "Pick folder": "Choisissez un dossier",
62 - "send_files": "Envoyer {n,plural,one{# fichier} other{# fichiers}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# fichier} other{# fichiers}}, {size}, prêt à téléverser",
63 + "Send": "Envoyer",
64 "Clear": "Effacer",
65 "failed_upload": "Impossible de transférer {name}",
66 "confirm_resume": "Reprendre le télé-versement?",
src/langs/hfs-lang-hu.json
+2 -1
@@ -60,7 +60,8 @@
60 "Create folder": "Mappa létrehozása",
61 "Pick files": "Fájlok kiválasztása",
62 "Pick folder": "Mappa kiválasztása",
63 - "send_files": "Feltöltés {n,többes szám,egy{# file} egyéb{# file}}, {size}",
63 + "ready_to_upload": "{n,plural,one{# fájl} other{# fájl}}, {size}, feltöltésre kész",
64 + "Send": "Küldés",
65 "Clear": "Mégsem",
66 "failed_upload": "A(z) {name} feltöltése sikertelen",
67 "confirm_resume": "Folytatja a feltöltést?",
src/langs/hfs-lang-it.json
+2 -1
@@ -57,7 +57,8 @@
57 "Create folder": "Crea cartella",
58 "Pick files": "Scegli file",
59 "Pick folder": "Scegli una cartella",
60 - "send_files": "Invia {n} file, {size}",
60 + "ready_to_upload": "{n} file, {size}, pronto per il caricamento",
61 + "Send": "Invia",
62 "Clear": "Azzera",
63 "failed_upload": "Upload fallito per {name}",
64 "file too large": "file troppo grande",
src/langs/hfs-lang-ja.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "新しいフォルダ",
60 "Pick files": "ファイルを選択",
61 "Pick folder": "フォルダを選択",
62 - "send_files": "{n,plural,one{# ファイル} other{# ファイル}}を送る {size}",
62 + "ready_to_upload": "{n,plural,one{# ファイル} other{# ファイル}}、{size}、アップロード準備完了",
63 + "Send": "送信",
64 "Clear": "クリア",
65 "failed_upload": "{name}をアップロードできませんでした",
66 "confirm_resume": "アップロードを再開しますか?",
src/langs/hfs-lang-ko.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "폴더 생성",
60 "Pick files": "파일 선택",
61 "Pick folder": "폴더 선택",
62 - "send_files": "{n,plural,one{# file} other{# files}}, {size} 보내기",
62 + "ready_to_upload": "{n,plural,one{# file} other{# files}}, {size}, 업로드 준비 완료",
63 + "Send": "보내기",
64 "Clear": "지우기",
65 "failed_upload": "{name} 업로드에 실패했습니다.",
66 "confirm_resume": "업로드를 재시도 하시겠습니까?",
src/langs/hfs-lang-lt.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Sukurti aplanką",
60 "Pick files": "Pasirinkti failus",
61 "Pick folder": "Pasirinkti aplanką",
62 - "send_files": "Siųsti {n,plural,one{# failą} few{# failus} other{# failų}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# failas} few{# failai} other{# failų}}, {size}, paruošta įkelti",
63 + "Send": "Siųsti",
64 "Clear": "Išvalyti",
65 "failed_upload": "Nepavyko įkelti {name}",
66 "file too large": "failas per didelis",
src/langs/hfs-lang-ms.json
+2 -1
@@ -60,7 +60,8 @@
60 "upload_finished": "{n} selesai ({size})",
61 "upload_errors": "{n} gagal",
62 "upload_file_rejected": "Beberapa fail tidak diterima",
63 -
63 + "ready_to_upload": "{n,plural,one{# fail} other{# fail}}, {size}, sedia untuk dimuat naik",
64 + "Send": "Hantar",
65 "download counter": "pengira muat turun",
66
67 "File menu": "Menu fail",
src/langs/hfs-lang-nl.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Creeer map",
60 "Pick files": "Kies bestand",
61 "Pick folder": "Kies map",
62 - "send_files": "Verzonden {n,plural,one{# bestand} other{# bestanden}}, {grootte}",
62 + "ready_to_upload": "{n,plural,one{# bestand} other{# bestanden}}, {size}, klaar om te uploaden",
63 + "Send": "Verzenden",
64 "Clear": "Clear",
65 "failed_upload": "Kon het niet uploaden {name}",
66 "file too large": "bestand te groot",
src/langs/hfs-lang-pl.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Utwórz folder",
60 "Pick files": "Wybierz pliki",
61 "Pick folder": "Wybierz folder",
62 - "send_files": "Wyślij {n,plural,one{# plik} other{# pliki}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# plik} other{# pliki}}, {size}, gotowe do przesłania",
63 + "Send": "Wyślij",
64 "Clear": "Wyczyść",
65 "failed_upload": "Nie można przesłać {name}",
66 "file too large": "plik jest zbyt duży",
src/langs/hfs-lang-pt-br.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Criar pasta",
60 "Pick files": "Escolher arquivos",
61 "Pick folder": "Escolher pastas",
62 - "send_files": "Enviar {n,plural,one{# arquivo} other{# arquivos}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# arquivo} other{# arquivos}}, {size}, pronto para enviar",
63 + "Send": "Enviar",
64 "Clear": "Limpar",
65 "failed_upload": "Não foi possivel enviar o arquivo {name}",
66 "file too large": "arquivo é muito grande",
src/langs/hfs-lang-ro.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Creează folder",
60 "Pick files": "Selectează fișiere",
61 "Pick folder": "Selectează folder",
62 - "send_files": "Trimite {n,plural,one{# fișier} other{# fișiere}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# fișier} other{# fișiere}}, {size}, gata de încărcat",
63 + "Send": "Trimite",
64 "Clear": "Șterge",
65 "failed_upload": "Nu s-a putut încărca {name}",
66 "confirm_resume": "Continuă încărcarea?",
src/langs/hfs-lang-ru.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Создать папку",
60 "Pick files": "Выбрать файлы",
61 "Pick folder": "Выбрать папку",
62 - "send_files": "Загрузить {n,plural, one{# файл} few{# файла} many{# файлов}}, {size}",
62 + "ready_to_upload": "{n,plural, one{# файл} few{# файла} many{# файлов}}, {size}, готово к загрузке",
63 + "Send": "Загрузить",
64 "Clear": "Очистить",
65 "failed_upload": "Не удалась загрузить {name}",
66 "confirm_resume": "Возобновить загрузку?",
src/langs/hfs-lang-sr-latn.json
+2 -1
@@ -60,7 +60,8 @@
60 "Create folder": "Napravi fasciklu",
61 "Pick files": "Izaberite datoteke",
62 "Pick folder": "Izaberite fasciklu",
63 - "send_files": "Pošalji {n,plural,one{# datoteka} other{# datoteke}}, {size}",
63 + "ready_to_upload": "{n,plural,one{# datoteka} other{# datoteke}}, {size}, spremno za otpremanje",
64 + "Send": "Pošalji",
65 "Clear": "Očisti",
66 "failed_upload": "Nije moguće otpremiti {name}",
67 "file too large": "datoteka je prevelika",
src/langs/hfs-lang-sr.json
+2 -1
@@ -60,7 +60,8 @@
60 "Create folder": "Креирај фолдер",
61 "Pick files": " Изаберите документ(а)",
62 "Pick folder": "Изаберите фолдер(е)",
63 - "send_files": "Отпремите {n} документ(а), {size}",
63 + "ready_to_upload": "{n} документ(а), {size}, спремно за отпремање",
64 + "Send": "Пошаљи",
65 "Clear": "Обриши",
66 "failed_upload" : "Отпремање није успело {name}",
67 "confirm_resume": "Настави преузимање?",
src/langs/hfs-lang-th.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "สร้างโฟลเดอร์",
60 "Pick files": "เลือกไฟล์",
61 "Pick folder": "เลือกโฟลเดอร์",
62 - "send_files": "Send {n,plural,one{# file} other{# files}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# ไฟล์} other{# ไฟล์}}, {size}, พร้อมอัปโหลด",
63 + "Send": "ส่ง",
64 "Clear": "ล้าง",
65 "failed_upload": "ไม่สามารถอัปโหลด {name}",
66 "confirm_resume": "ดำเนินการอัปโหลดต่อหรือไม่?",
src/langs/hfs-lang-tr.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "Klasör Oluştur",
60 "Pick files": "Dosya(lar)ı Seç",
61 "Pick folder": "Klasör Seç",
62 - "send_files": "{n,plural,one{# file} other{# files}} dosyayı gönder (UPLOAD), {size}",
62 + "ready_to_upload": "{n,plural,one{# dosya} other{# dosya}}, {size}, yüklemeye hazır",
63 + "Send": "Gönder",
64 "Clear": "Temizle",
65 "failed_upload": "{name} UPLOAD edilemedi (veri aktarım sorunu)",
66 "confirm_resume": "UPLOAD kaldığı yerden devam etsin mi?",
src/langs/hfs-lang-uk.json
+2 -1
@@ -57,7 +57,8 @@
57 "Create folder": "Створити теку",
58 "Pick files": "Вибрати файли",
59 "Pick folder": "Вибрати теку",
60 - "send_files": "Завантажити {n,plural, one{# файл} few{# файли} many{# файлів}}, {size}",
60 + "ready_to_upload": "{n,plural, one{# файл} few{# файли} many{# файлів}}, {size}, готово до завантаження",
61 + "Send": "Завантажити",
62 "Clear": "Очистити",
63 "failed_upload": "Не вдалося завантажити {name}",
64 "confirm_resume": "Відновити завантаження?",
src/langs/hfs-lang-vi.json
+2 -1
@@ -60,7 +60,8 @@
60 "Create folder": "Tạo folder...",
61 "Pick files": "Chọn file...",
62 "Pick folder": "Chọn folder...",
63 - "send_files": "Gửi {n,plural,one{# file} other{# file}}, {size}",
63 + "ready_to_upload": "{n,plural,one{# file} other{# file}}, {size}, sẵn sàng tải lên",
64 + "Send": "Gửi",
65 "Clear": "Dọn.",
66 "failed_upload": "Không thể upload {name}!",
67 "confirm_resume": "Tiếp tục upload?",
src/langs/hfs-lang-zh-tw.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "建立資料夾",
60 "Pick files": "選擇檔案",
61 "Pick folder": "選擇資料夾",
62 - "send_files": "開始上傳 {n,plural,one{# 個檔案} other{# 個檔案}}, {size}",
62 + "ready_to_upload": "{n,plural,one{# 個檔案} other{# 個檔案}}, {size},準備上傳",
63 + "Send": "傳送",
64 "Clear": "清空",
65 "failed_upload": "無法上傳 {name}",
66 "confirm_resume": "繼續上傳?",
src/langs/hfs-lang-zh.json
+2 -1
@@ -59,7 +59,8 @@
59 "Create folder": "创建文件夹",
60 "Pick files": "选择文件",
61 "Pick folder": "选择文件夹",
62 - "send_files": "开始上传 {n,plural,other{# 个文件}},{size}",
62 + "ready_to_upload": "{n,plural,other{# 个文件}},{size},准备上传",
63 + "Send": "发送",
64 "Clear": "清除",
65 "failed_upload": "无法上传 {name}",
66 "confirm_resume": "是否重命名?",