diff options
| author | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-09-11 21:43:14 +0200 |
|---|---|---|
| committer | Xavier Del Campo Romero <xavi.dcr@tutanota.com> | 2023-10-09 14:08:52 +0200 |
| commit | fefcf353520ebbe9e63f59e25a85fc122a5acc7a (patch) | |
| tree | 8f272bd6137c5663f3d77ed337d6eec1d7695fd0 | |
| parent | 90bee87ff5cf6cf3ee481394ece343e2446ac70f (diff) | |
Allow to resume failed transfers
| -rw-r--r-- | libdino/src/service/file_manager.vala | 3 | ||||
| -rw-r--r-- | main/src/ui/conversation_content_view/file_widget.vala | 3 |
2 files changed, 5 insertions, 1 deletions
diff --git a/libdino/src/service/file_manager.vala b/libdino/src/service/file_manager.vala index 89ae1ce1..2ef79d84 100644 --- a/libdino/src/service/file_manager.vala +++ b/libdino/src/service/file_manager.vala @@ -210,6 +210,8 @@ public class FileManager : StreamInteractionModule, Object { private async void download_file_internal(FileProvider file_provider, FileTransfer file_transfer, Conversation conversation) { try { + file_transfer.cancellable.reset(); + // Get meta info FileReceiveData receive_data = file_provider.get_file_receive_data(file_transfer); FileDecryptor? file_decryptor = null; @@ -246,6 +248,7 @@ public class FileManager : StreamInteractionModule, Object { File file = File.new_for_path(Path.build_filename(get_storage_dir(), filename)); OutputStream os = file.create(FileCreateFlags.REPLACE_DESTINATION); + file_transfer.cancellable.reset(); uint8[] buffer = new uint8[1024]; ssize_t read; while ((read = yield input_stream.read_async(buffer, Priority.LOW, file_transfer.cancellable)) > 0) { diff --git a/main/src/ui/conversation_content_view/file_widget.vala b/main/src/ui/conversation_content_view/file_widget.vala index b63195dc..cac6fda4 100644 --- a/main/src/ui/conversation_content_view/file_widget.vala +++ b/main/src/ui/conversation_content_view/file_widget.vala @@ -198,12 +198,13 @@ public class FileDefaultWidgetController : Object { open_file(); } break; + case FileTransfer.State.FAILED: case FileTransfer.State.NOT_STARTED: assert(stream_interactor != null && file_transfer != null); stream_interactor.get_module(FileManager.IDENTITY).download_file.begin(file_transfer); break; default: - // Clicking doesn't do anything in FAILED and IN_PROGRESS states + // Clicking doesn't do anything in IN_PROGRESS states break; } return false; |
