Allow to resume failed transfers

This commit is contained in:
Xavier Del Campo Romero 2023-09-11 21:43:14 +02:00
parent 90bee87ff5
commit fefcf35352
Signed by: xavi
GPG Key ID: 84FF3612A9BF43F2
2 changed files with 5 additions and 1 deletions

View File

@ -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) {

View File

@ -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;