From e159fd2492c28c1ef4ab64828ca0e8c2de877b41 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Fri, 3 Jul 2020 21:14:39 +0200 Subject: Only query entity caps when we need them --- libdino/src/service/file_manager.vala | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'libdino/src/service/file_manager.vala') diff --git a/libdino/src/service/file_manager.vala b/libdino/src/service/file_manager.vala index abeaabc7..fe9cba73 100644 --- a/libdino/src/service/file_manager.vala +++ b/libdino/src/service/file_manager.vala @@ -38,10 +38,10 @@ public class FileManager : StreamInteractionModule, Object { this.add_sender(new JingleFileSender(stream_interactor)); } - public HashMap get_file_size_limits(Conversation conversation) { + public async HashMap get_file_size_limits(Conversation conversation) { HashMap ret = new HashMap(); foreach (FileSender sender in file_senders) { - ret[sender.get_id()] = sender.get_file_size_limit(conversation); + ret[sender.get_id()] = yield sender.get_file_size_limit(conversation); } return ret; } @@ -86,8 +86,8 @@ public class FileManager : StreamInteractionModule, Object { FileSender file_sender = null; FileEncryptor file_encryptor = null; foreach (FileSender sender in file_senders) { - if (sender.can_send(conversation, file_transfer)) { - if (file_transfer.encryption == Encryption.NONE || sender.can_encrypt(conversation, file_transfer)) { + if (yield sender.can_send(conversation, file_transfer)) { + if (file_transfer.encryption == Encryption.NONE || yield sender.can_encrypt(conversation, file_transfer)) { file_sender = sender; break; } else { @@ -140,11 +140,11 @@ public class FileManager : StreamInteractionModule, Object { yield download_file_internal(file_provider, file_transfer, conversation); } - public bool is_upload_available(Conversation? conversation) { + public async bool is_upload_available(Conversation? conversation) { if (conversation == null) return false; foreach (FileSender file_sender in file_senders) { - if (file_sender.is_upload_available(conversation)) return true; + if (yield file_sender.is_upload_available(conversation)) return true; } return false; } @@ -401,12 +401,12 @@ public interface FileProvider : Object { public interface FileSender : Object { public signal void upload_available(Account account); - public abstract bool is_upload_available(Conversation conversation); - public abstract long get_file_size_limit(Conversation conversation); - public abstract bool can_send(Conversation conversation, FileTransfer file_transfer); + public abstract async bool is_upload_available(Conversation conversation); + public abstract async long get_file_size_limit(Conversation conversation); + public abstract async bool can_send(Conversation conversation, FileTransfer file_transfer); public abstract async FileSendData? prepare_send_file(Conversation conversation, FileTransfer file_transfer, FileMeta file_meta) throws FileSendError; public abstract async void send_file(Conversation conversation, FileTransfer file_transfer, FileSendData file_send_data, FileMeta file_meta) throws FileSendError; - public abstract bool can_encrypt(Conversation conversation, FileTransfer file_transfer); + public abstract async bool can_encrypt(Conversation conversation, FileTransfer file_transfer); public abstract int get_id(); public abstract float get_priority(); -- cgit v1.2.3-70-g09d2