From 1ede8ade12f26cf39d29d5c616bd28693d677e09 Mon Sep 17 00:00:00 2001 From: fiaxh Date: Fri, 14 Nov 2025 14:48:25 -0600 Subject: Add support for message moderation and retraction --- libdino/src/service/muc_manager.vala | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'libdino/src/service/muc_manager.vala') diff --git a/libdino/src/service/muc_manager.vala b/libdino/src/service/muc_manager.vala index 5b251b07..fd8b4336 100644 --- a/libdino/src/service/muc_manager.vala +++ b/libdino/src/service/muc_manager.vala @@ -353,6 +353,13 @@ public class MucManager : StreamInteractionModule, Object { return null; } + public Xep.Muc.Role? get_own_role(Conversation conversation) { + Xmpp.Jid? own_jid = stream_interactor.get_module(MucManager.IDENTITY).get_own_jid(conversation.counterpart, conversation.account); + if (own_jid == null) return null; + + return stream_interactor.get_module(MucManager.IDENTITY).get_role(own_jid, conversation.account); + } + public Xep.Muc.Affiliation? get_affiliation(Jid muc_jid, Jid jid, Account account) { Xep.Muc.Flag? flag = get_muc_flag(account); if (flag != null) { @@ -698,6 +705,13 @@ public class MucManager : StreamInteractionModule, Object { message.real_jid = real_jid.bare_jid; } } + + string? occupant_id = Xep.OccupantIds.get_occupant_id(stanza.stanza); + if (occupant_id != null) { + message.occupant_db_id = stream_interactor.get_module(OccupantIdStore.IDENTITY) + .cache_occupant_id(conversation.account, occupant_id, message.from); + } + Jid? own_muc_jid = stream_interactor.get_module(MucManager.IDENTITY).get_own_jid(message.counterpart.bare_jid, conversation.account); if (stanza.id != null && own_muc_jid != null && message.from.equals(own_muc_jid)) { Entities.Message? m = stream_interactor.get_module(MessageStorage.IDENTITY).get_message_by_stanza_id(stanza.id, conversation); -- cgit v1.3