fix sendFiles wrong direction

This commit is contained in:
csf 2023-03-08 23:06:34 +09:00
parent d867decd98
commit a962e068f8
2 changed files with 31 additions and 13 deletions

View File

@ -338,7 +338,8 @@ class _FileManagerPageState extends State<FileManagerPage>
..name = file.name ..name = file.name
..size = FileSystemEntity.isDirectorySync(f.path) ? 0 : f.lengthSync()); ..size = FileSystemEntity.isDirectorySync(f.path) ? 0 : f.lengthSync());
} }
model.remoteController.sendFiles(items); final otherSideData = model.localController.directoryData();
model.remoteController.sendFiles(items, otherSideData);
} }
} }
@ -741,7 +742,9 @@ class _FileManagerViewState extends State<FileManagerView> {
), ),
onPressed: validItems(_selectedItems) onPressed: validItems(_selectedItems)
? () { ? () {
controller.sendFiles(_selectedItems); final otherSideData =
controller.getOtherSideDirectoryData();
controller.sendFiles(_selectedItems, otherSideData);
_selectedItems.clear(); _selectedItems.clear();
} }
: null, : null,

View File

@ -55,13 +55,15 @@ class FileModel {
getSessionID: getSessionID, getSessionID: getSessionID,
dialogManager: parent.target?.dialogManager, dialogManager: parent.target?.dialogManager,
jobController: jobController, jobController: jobController,
fileFetcher: fileFetcher); fileFetcher: fileFetcher,
getOtherSideDirectoryData: () => remoteController.directoryData());
remoteController = FileController( remoteController = FileController(
isLocal: false, isLocal: false,
getSessionID: getSessionID, getSessionID: getSessionID,
dialogManager: parent.target?.dialogManager, dialogManager: parent.target?.dialogManager,
jobController: jobController, jobController: jobController,
fileFetcher: fileFetcher); fileFetcher: fileFetcher,
getOtherSideDirectoryData: () => localController.directoryData());
} }
Future<void> onReady() async { Future<void> onReady() async {
@ -189,6 +191,12 @@ class FileModel {
} }
} }
class DirectoryData {
final DirectoryOptions options;
final FileDirectory directory;
DirectoryData(this.directory, this.options);
}
class FileController { class FileController {
final bool isLocal; final bool isLocal;
final GetSessionID getSessionID; final GetSessionID getSessionID;
@ -205,12 +213,15 @@ class FileController {
final JobController jobController; final JobController jobController;
final OverlayDialogManager? dialogManager; final OverlayDialogManager? dialogManager;
final DirectoryData Function() getOtherSideDirectoryData;
FileController( FileController(
{required this.isLocal, {required this.isLocal,
required this.getSessionID, required this.getSessionID,
required this.dialogManager, required this.dialogManager,
required this.jobController, required this.jobController,
required this.fileFetcher}); required this.fileFetcher,
required this.getOtherSideDirectoryData});
String get homePath => options.value.home; String get homePath => options.value.home;
@ -229,6 +240,10 @@ class FileController {
} }
} }
DirectoryData directoryData() {
return DirectoryData(directory.value, options.value);
}
Future<void> onReady() async { Future<void> onReady() async {
options.value.home = await bind.mainGetHomeDir(); options.value.home = await bind.mainGetHomeDir();
options.value.showHidden = (await bind.sessionGetPeerOption( options.value.showHidden = (await bind.sessionGetPeerOption(
@ -372,18 +387,18 @@ class FileController {
} }
/// sendFiles from other side (SelectedItems) to current side (FileController.isLocal). /// sendFiles from other side (SelectedItems) to current side (FileController.isLocal).
void sendFiles(SelectedItems items) { void sendFiles(SelectedItems items, DirectoryData otherSideData) {
/// ignore same side /// ignore wrong items side status
if (items.isLocal == isLocal) { if (items.isLocal != isLocal) {
return; return;
} }
// alias // alias
final isRemoteToLocal = isLocal; final isRemoteToLocal = !isLocal;
final toPath = directory.value.path; final toPath = otherSideData.directory.path;
final isWindows = options.value.isWindows; final isWindows = otherSideData.options.isWindows;
final showHidden = options.value.showHidden; final showHidden = otherSideData.options.showHidden;
for (var from in items.items) { for (var from in items.items) {
final jobID = jobController.add(from, isRemoteToLocal); final jobID = jobController.add(from, isRemoteToLocal);
bind.sessionSendFiles( bind.sessionSendFiles(
@ -403,7 +418,7 @@ class FileController {
Future<void> removeAction(SelectedItems items) async { Future<void> removeAction(SelectedItems items) async {
_removeCheckboxRemember = false; _removeCheckboxRemember = false;
if (items.isLocal == isLocal) { if (items.isLocal != isLocal) {
debugPrint("Failed to removeFile, wrong files"); debugPrint("Failed to removeFile, wrong files");
return; return;
} }