fix sendFiles wrong direction
This commit is contained in:
parent
d867decd98
commit
a962e068f8
@ -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,
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user