From 93e2e0d1cf7d6e5a7ccc7f6960d06d93e7e0eb87 Mon Sep 17 00:00:00 2001 From: sojuz151 <36378873+sojuz151@users.noreply.github.com> Date: Tue, 24 Aug 2021 19:35:00 +0200 Subject: Fixed name change (#1076) --- .../conversation_item_skeleton.vala | 13 +++++++++++-- main/src/ui/conversation_view_controller.vala | 5 +++++ 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/main/src/ui/conversation_content_view/conversation_item_skeleton.vala b/main/src/ui/conversation_content_view/conversation_item_skeleton.vala index 343c6631..d6bf5089 100644 --- a/main/src/ui/conversation_content_view/conversation_item_skeleton.vala +++ b/main/src/ui/conversation_content_view/conversation_item_skeleton.vala @@ -127,6 +127,7 @@ public class ItemMetaDataHeader : Box { public Entities.Message.Marked item_mark { get; set; } private ArrayList items = new ArrayList(); private uint time_update_timeout = 0; + private ulong updated_roster_handler_id = 0; public ItemMetaDataHeader(StreamInteractor stream_interactor, Conversation conversation, Plugins.MetaConversationItem item) { this.stream_interactor = stream_interactor; @@ -136,6 +137,11 @@ public class ItemMetaDataHeader : Box { update_name_label(); name_label.style_updated.connect(update_name_label); + updated_roster_handler_id = stream_interactor.get_module(RosterManager.IDENTITY).updated_roster_item.connect((account, jid, roster_item) => { + if (this.conversation.account.equals(account) && this.conversation.counterpart.equals(jid)) { + update_name_label(); + } + }); conversation.notify["encryption"].connect(update_unencrypted_icon); item.notify["encryption"].connect(update_encryption_icon); @@ -309,12 +315,15 @@ public class ItemMetaDataHeader : Box { } public override void dispose() { - base.dispose(); - if (time_update_timeout != 0) { Source.remove(time_update_timeout); time_update_timeout = 0; } + if (updated_roster_handler_id != 0){ + stream_interactor.get_module(RosterManager.IDENTITY).disconnect(updated_roster_handler_id); + updated_roster_handler_id = 0; + } + base.dispose(); } } diff --git a/main/src/ui/conversation_view_controller.vala b/main/src/ui/conversation_view_controller.vala index a9a94738..87657b37 100644 --- a/main/src/ui/conversation_view_controller.vala +++ b/main/src/ui/conversation_view_controller.vala @@ -80,6 +80,11 @@ public class ConversationViewController : Object { update_conversation_topic(subject); } }); + stream_interactor.get_module(RosterManager.IDENTITY).updated_roster_item.connect((account, jid, roster_item) => { + if (conversation.account.equals(account) && conversation.counterpart.equals(jid)) { + update_conversation_display_name(); + } + }); stream_interactor.get_module(FileManager.IDENTITY).upload_available.connect(update_file_upload_status); -- cgit v1.2.3-70-g09d2