Fix images from another client in our account not being displayed right away

This commit is contained in:
fiaxh 2023-03-23 10:17:42 -06:00 committed by Marvin W
parent ef8fb0e94c
commit 65efaca6fd
No known key found for this signature in database
GPG key ID: 072E9235DB996F2A
2 changed files with 14 additions and 5 deletions

View file

@ -275,9 +275,14 @@ public class FileManager : StreamInteractionModule, Object {
if (conversation.type_.is_muc_semantic()) {
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 {
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 = from.equals_bare(file_transfer.ourpart) ? FileTransfer.DIRECTION_SENT : FileTransfer.DIRECTION_RECEIVED;
file_transfer.direction = FileTransfer.DIRECTION_RECEIVED;
}
}
file_transfer.time = time;
file_transfer.local_time = local_time;

View file

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