From 65efaca6fdcbc788060a0ecc4f7e10fbf5b79669 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Thu, 23 Mar 2023 10:17:42 -0600 Subject: [PATCH] Fix images from another client in our account not being displayed right away --- libdino/src/service/file_manager.vala | 9 +++++++-- main/src/ui/conversation_content_view/file_widget.vala | 10 +++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/libdino/src/service/file_manager.vala b/libdino/src/service/file_manager.vala index 89ae1ce1..984fe5fd 100644 --- a/libdino/src/service/file_manager.vala +++ b/libdino/src/service/file_manager.vala @@ -276,8 +276,13 @@ public class FileManager : StreamInteractionModule, Object { file_transfer.ourpart = stream_interactor.get_module(MucManager.IDENTITY).get_own_jid(conversation.counterpart, conversation.account) ?? conversation.account.bare_jid; file_transfer.direction = from.equals(file_transfer.ourpart) ? FileTransfer.DIRECTION_SENT : FileTransfer.DIRECTION_RECEIVED; } else { - file_transfer.ourpart = conversation.account.full_jid; - file_transfer.direction = from.equals_bare(file_transfer.ourpart) ? FileTransfer.DIRECTION_SENT : FileTransfer.DIRECTION_RECEIVED; + if (from.equals_bare(conversation.account.bare_jid)) { + file_transfer.ourpart = from; + file_transfer.direction = FileTransfer.DIRECTION_SENT; + } else { + file_transfer.ourpart = conversation.account.full_jid; + file_transfer.direction = FileTransfer.DIRECTION_RECEIVED; + } } file_transfer.time = time; file_transfer.local_time = local_time; diff --git a/main/src/ui/conversation_content_view/file_widget.vala b/main/src/ui/conversation_content_view/file_widget.vala index 785acf7d..02c9407a 100644 --- a/main/src/ui/conversation_content_view/file_widget.vala +++ b/main/src/ui/conversation_content_view/file_widget.vala @@ -108,7 +108,7 @@ public class FileWidget : SizeRequestBox { } catch (Error e) { } } - if (state != State.DEFAULT) { + if (!show_image() && state != State.DEFAULT) { if (content != null) this.remove(content); FileDefaultWidget default_file_widget = new FileDefaultWidget(); default_widget_controller = new FileDefaultWidgetController(default_file_widget); @@ -121,8 +121,12 @@ public class FileWidget : SizeRequestBox { private bool show_image() { if (file_transfer.mime_type == null) return false; - if (file_transfer.state != FileTransfer.State.COMPLETE && - !(file_transfer.direction == FileTransfer.DIRECTION_SENT && file_transfer.state == FileTransfer.State.IN_PROGRESS)) { + + // If the image is being sent by this client, we already have the file + bool in_progress_from_us = file_transfer.direction == FileTransfer.DIRECTION_SENT && + file_transfer.ourpart.equals(file_transfer.account.full_jid) && + file_transfer.state == FileTransfer.State.IN_PROGRESS; + if (file_transfer.state != FileTransfer.State.COMPLETE && !in_progress_from_us) { return false; }