From d08c335fdf341b335419baf45b941aaccd73a805 Mon Sep 17 00:00:00 2001 From: fufesou <13586388+fufesou@users.noreply.github.com> Date: Wed, 18 Sep 2024 19:29:35 +0800 Subject: [PATCH] fix: file transfer, show error, msgbox (#9389) * fix: file transfer, show error, msgbox Signed-off-by: fufesou * fix: translation Signed-off-by: fufesou --------- Signed-off-by: fufesou --- flutter/lib/models/file_model.dart | 21 +++++++++++++++-- src/lang/ar.rs | 1 + src/lang/be.rs | 1 + src/lang/bg.rs | 1 + src/lang/ca.rs | 1 + src/lang/cn.rs | 1 + src/lang/cs.rs | 1 + src/lang/da.rs | 1 + src/lang/de.rs | 1 + src/lang/el.rs | 1 + src/lang/en.rs | 1 + src/lang/eo.rs | 1 + src/lang/es.rs | 1 + src/lang/et.rs | 1 + src/lang/eu.rs | 1 + src/lang/fa.rs | 1 + src/lang/fr.rs | 1 + src/lang/he.rs | 1 + src/lang/hr.rs | 1 + src/lang/hu.rs | 1 + src/lang/id.rs | 1 + src/lang/it.rs | 1 + src/lang/ja.rs | 1 + src/lang/ko.rs | 1 + src/lang/kz.rs | 1 + src/lang/lt.rs | 1 + src/lang/lv.rs | 1 + src/lang/nb.rs | 1 + src/lang/nl.rs | 1 + src/lang/pl.rs | 1 + src/lang/pt_PT.rs | 1 + src/lang/ptbr.rs | 1 + src/lang/ro.rs | 1 + src/lang/ru.rs | 1 + src/lang/sk.rs | 1 + src/lang/sl.rs | 1 + src/lang/sq.rs | 1 + src/lang/sr.rs | 1 + src/lang/sv.rs | 1 + src/lang/template.rs | 1 + src/lang/th.rs | 1 + src/lang/tr.rs | 1 + src/lang/tw.rs | 1 + src/lang/uk.rs | 1 + src/lang/vn.rs | 1 + src/server/connection.rs | 38 ++++++++++++++++++++---------- 46 files changed, 88 insertions(+), 15 deletions(-) diff --git a/flutter/lib/models/file_model.dart b/flutter/lib/models/file_model.dart index 68af29380..a0d5bc0b5 100644 --- a/flutter/lib/models/file_model.dart +++ b/flutter/lib/models/file_model.dart @@ -34,6 +34,7 @@ class JobID { } typedef GetSessionID = SessionID Function(); +typedef GetDialogManager = OverlayDialogManager? Function(); class FileModel { final WeakReference parent; @@ -45,13 +46,15 @@ class FileModel { late final FileController remoteController; late final GetSessionID getSessionID; + late final GetDialogManager getDialogManager; SessionID get sessionId => getSessionID(); late final FileDialogEventLoop evtLoop; FileModel(this.parent) { getSessionID = () => parent.target!.sessionId; + getDialogManager = () => parent.target?.dialogManager; fileFetcher = FileFetcher(getSessionID); - jobController = JobController(getSessionID); + jobController = JobController(getSessionID, getDialogManager); localController = FileController( isLocal: true, getSessionID: getSessionID, @@ -736,14 +739,19 @@ class FileController { } } +const _kOneWayFileTransferError = 'one-way-file-transfer-tip'; + class JobController { static final JobID jobID = JobID(); final jobTable = List.empty(growable: true).obs; final jobResultListener = JobResultListener>(); final GetSessionID getSessionID; + final GetDialogManager getDialogManager; SessionID get sessionId => getSessionID(); + OverlayDialogManager? get alogManager => getDialogManager(); + int _lastTimeShowMsgbox = DateTime.now().millisecondsSinceEpoch; - JobController(this.getSessionID); + JobController(this.getSessionID, this.getDialogManager); int getJob(int id) { return jobTable.indexWhere((element) => element.id == id); @@ -882,6 +890,15 @@ class JobController { } jobTable.refresh(); } + if (err == _kOneWayFileTransferError) { + if (DateTime.now().millisecondsSinceEpoch - _lastTimeShowMsgbox > 3000) { + final dm = alogManager; + if (dm != null) { + _lastTimeShowMsgbox = DateTime.now().millisecondsSinceEpoch; + msgBox(sessionId, 'custom-nocancel', 'Error', err, '', dm); + } + } + } debugPrint("jobError $evt"); } diff --git a/src/lang/ar.rs b/src/lang/ar.rs index 68c041481..a157d3d9d 100644 --- a/src/lang/ar.rs +++ b/src/lang/ar.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/be.rs b/src/lang/be.rs index 136ccf9fe..4fbfff131 100644 --- a/src/lang/be.rs +++ b/src/lang/be.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/bg.rs b/src/lang/bg.rs index 7efdd0dfa..2992911a8 100644 --- a/src/lang/bg.rs +++ b/src/lang/bg.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", "Възобновяване"), ("Invalid file name", "Невалидно име за файл"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ca.rs b/src/lang/ca.rs index 0aa64ec28..260b0b4c6 100644 --- a/src/lang/ca.rs +++ b/src/lang/ca.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/cn.rs b/src/lang/cn.rs index 62cb5452c..dc986aaca 100644 --- a/src/lang/cn.rs +++ b/src/lang/cn.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "父目录"), ("Resume", "继续"), ("Invalid file name", "无效文件名"), + ("one-way-file-transfer-tip", "被控端启用了单项文件传输"), ].iter().cloned().collect(); } diff --git a/src/lang/cs.rs b/src/lang/cs.rs index 8ff3d8069..c3a1b9758 100644 --- a/src/lang/cs.rs +++ b/src/lang/cs.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Rodičovský adresář"), ("Resume", "Pokračovat"), ("Invalid file name", "Nesprávný název souboru"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/da.rs b/src/lang/da.rs index 03cf47d4b..be02a7360 100644 --- a/src/lang/da.rs +++ b/src/lang/da.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "mappe"), ("Resume", "Fortsæt"), ("Invalid file name", "Ugyldigt filnavn"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/de.rs b/src/lang/de.rs index e8e61543a..3069ebe3c 100644 --- a/src/lang/de.rs +++ b/src/lang/de.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Übergeordnetes Verzeichnis"), ("Resume", "Fortsetzen"), ("Invalid file name", "Ungültiger Dateiname"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/el.rs b/src/lang/el.rs index b3ce7dcaf..e05aa9fb8 100644 --- a/src/lang/el.rs +++ b/src/lang/el.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/en.rs b/src/lang/en.rs index 917422d0d..55ef4470c 100644 --- a/src/lang/en.rs +++ b/src/lang/en.rs @@ -234,5 +234,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("About RustDesk", ""), ("network_error_tip", "Please check your network connection, then click retry."), ("enable-trusted-devices-tip", "Skip 2FA verification on trusted devices"), + ("one-way-file-transfer-tip", "One-way file transfer is enabled on the controlled side."), ].iter().cloned().collect(); } diff --git a/src/lang/eo.rs b/src/lang/eo.rs index 144bf7bc3..d8cb8ec34 100644 --- a/src/lang/eo.rs +++ b/src/lang/eo.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/es.rs b/src/lang/es.rs index 794c751c0..c087b287c 100644 --- a/src/lang/es.rs +++ b/src/lang/es.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Directorio superior"), ("Resume", "Continuar"), ("Invalid file name", "Nombre de archivo no válido"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/et.rs b/src/lang/et.rs index cc3f3afc3..24901265f 100644 --- a/src/lang/et.rs +++ b/src/lang/et.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/eu.rs b/src/lang/eu.rs index 412b4e740..9213c9689 100644 --- a/src/lang/eu.rs +++ b/src/lang/eu.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/fa.rs b/src/lang/fa.rs index b6949aa50..47988a95d 100644 --- a/src/lang/fa.rs +++ b/src/lang/fa.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/fr.rs b/src/lang/fr.rs index 31d786408..688bcf25f 100644 --- a/src/lang/fr.rs +++ b/src/lang/fr.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/he.rs b/src/lang/he.rs index 07d9aa977..7fc4758e1 100644 --- a/src/lang/he.rs +++ b/src/lang/he.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/hr.rs b/src/lang/hr.rs index 1dca1c7e0..4671a0d47 100644 --- a/src/lang/hr.rs +++ b/src/lang/hr.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/hu.rs b/src/lang/hu.rs index be089347a..2ceb6bce4 100644 --- a/src/lang/hu.rs +++ b/src/lang/hu.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/id.rs b/src/lang/id.rs index 42c36b5c7..168c78117 100644 --- a/src/lang/id.rs +++ b/src/lang/id.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/it.rs b/src/lang/it.rs index 7c18b52d2..08c00ee1f 100644 --- a/src/lang/it.rs +++ b/src/lang/it.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Cartella principale"), ("Resume", "Riprendi"), ("Invalid file name", "Nome file non valido"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ja.rs b/src/lang/ja.rs index 9d0f6ea05..e58ff25f7 100644 --- a/src/lang/ja.rs +++ b/src/lang/ja.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "親ディレクトリ"), ("Resume", "再開"), ("Invalid file name", "無効なファイル名"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ko.rs b/src/lang/ko.rs index 3e84ca262..daf85e632 100644 --- a/src/lang/ko.rs +++ b/src/lang/ko.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/kz.rs b/src/lang/kz.rs index c47764c81..85829e84a 100644 --- a/src/lang/kz.rs +++ b/src/lang/kz.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/lt.rs b/src/lang/lt.rs index b1d0317f8..7387d34e3 100644 --- a/src/lang/lt.rs +++ b/src/lang/lt.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/lv.rs b/src/lang/lv.rs index bb1090dca..0d8b19387 100644 --- a/src/lang/lv.rs +++ b/src/lang/lv.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Vecākdirektorijs"), ("Resume", "Atsākt"), ("Invalid file name", "Nederīgs faila nosaukums"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/nb.rs b/src/lang/nb.rs index d23191ef2..f3c4ed410 100644 --- a/src/lang/nb.rs +++ b/src/lang/nb.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/nl.rs b/src/lang/nl.rs index 78b36b2e3..c6d7bcbd3 100644 --- a/src/lang/nl.rs +++ b/src/lang/nl.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Hoofdmap"), ("Resume", "Hervatten"), ("Invalid file name", "Ongeldige bestandsnaam"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/pl.rs b/src/lang/pl.rs index 725d67996..59e4cbad2 100644 --- a/src/lang/pl.rs +++ b/src/lang/pl.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Folder nadrzędny"), ("Resume", "Wznów"), ("Invalid file name", "Nieprawidłowa nazwa pliku"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/pt_PT.rs b/src/lang/pt_PT.rs index 6afa4c528..d172cb4f9 100644 --- a/src/lang/pt_PT.rs +++ b/src/lang/pt_PT.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ptbr.rs b/src/lang/ptbr.rs index a5ba6de7b..6a5300028 100644 --- a/src/lang/ptbr.rs +++ b/src/lang/ptbr.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Diretório pai"), ("Resume", "Continuar"), ("Invalid file name", "Nome de arquivo inválido"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ro.rs b/src/lang/ro.rs index 0f11e5449..7b3ba2b28 100644 --- a/src/lang/ro.rs +++ b/src/lang/ro.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/ru.rs b/src/lang/ru.rs index b13c4a1b6..59a499595 100644 --- a/src/lang/ru.rs +++ b/src/lang/ru.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Родительская директория"), ("Resume", "Продолжить"), ("Invalid file name", "Неверное имя файла"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sk.rs b/src/lang/sk.rs index 51d090328..7b4678423 100644 --- a/src/lang/sk.rs +++ b/src/lang/sk.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "Rodičovský adresár"), ("Resume", "Obnoviť"), ("Invalid file name", "Nesprávny názov súboru"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sl.rs b/src/lang/sl.rs index 7c8d97494..637859cd4 100755 --- a/src/lang/sl.rs +++ b/src/lang/sl.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sq.rs b/src/lang/sq.rs index 0a73e0217..fe9a30c0c 100644 --- a/src/lang/sq.rs +++ b/src/lang/sq.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sr.rs b/src/lang/sr.rs index 4d3654ea9..906dc0d3f 100644 --- a/src/lang/sr.rs +++ b/src/lang/sr.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/sv.rs b/src/lang/sv.rs index 9d7956545..e877aca0c 100644 --- a/src/lang/sv.rs +++ b/src/lang/sv.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/template.rs b/src/lang/template.rs index 76e491c91..7b08bf3a3 100644 --- a/src/lang/template.rs +++ b/src/lang/template.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/th.rs b/src/lang/th.rs index acd14c8f9..1b818f479 100644 --- a/src/lang/th.rs +++ b/src/lang/th.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/tr.rs b/src/lang/tr.rs index f926e9454..26085f539 100644 --- a/src/lang/tr.rs +++ b/src/lang/tr.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/tw.rs b/src/lang/tw.rs index 9bbef2431..690792dbb 100644 --- a/src/lang/tw.rs +++ b/src/lang/tw.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", "父目錄"), ("Resume", "繼續"), ("Invalid file name", "無效文件名"), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/uk.rs b/src/lang/uk.rs index 6a177059c..ccc73b7b0 100644 --- a/src/lang/uk.rs +++ b/src/lang/uk.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/lang/vn.rs b/src/lang/vn.rs index 88f70a8e2..408060a09 100644 --- a/src/lang/vn.rs +++ b/src/lang/vn.rs @@ -644,5 +644,6 @@ pub static ref T: std::collections::HashMap<&'static str, &'static str> = ("Parent directory", ""), ("Resume", ""), ("Invalid file name", ""), + ("one-way-file-transfer-tip", ""), ].iter().cloned().collect(); } diff --git a/src/server/connection.rs b/src/server/connection.rs index 2863c2365..dbe8b9614 100644 --- a/src/server/connection.rs +++ b/src/server/connection.rs @@ -2139,22 +2139,34 @@ impl Connection { return true; } if crate::get_builtin_option(keys::OPTION_ONE_WAY_FILE_TRANSFER) == "Y" { - match fa.union { - Some(file_action::Union::Send(_)) - | Some(file_action::Union::RemoveFile(_)) - | Some(file_action::Union::Rename(_)) - | Some(file_action::Union::Create(_)) - | Some(file_action::Union::RemoveDir(_)) => { - self.send(fs::new_error( - 0, - "One-way file transfer is enabled on controlled side", - 0, - )) - .await; - return true; + let mut job_id = None; + match &fa.union { + Some(file_action::Union::Send(s)) => { + job_id = Some(s.id); + } + Some(file_action::Union::RemoveFile(rf)) => { + job_id = Some(rf.id); + } + Some(file_action::Union::Rename(r)) => { + job_id = Some(r.id); + } + Some(file_action::Union::Create(c)) => { + job_id = Some(c.id); + } + Some(file_action::Union::RemoveDir(rd)) => { + job_id = Some(rd.id); } _ => {} } + if let Some(job_id) = job_id { + self.send(fs::new_error( + job_id, + "one-way-file-transfer-tip", + 0, + )) + .await; + return true; + } } match fa.union { Some(file_action::Union::ReadDir(rd)) => {