comparison libervia/backend/plugins/plugin_comp_ap_gateway/__init__.py @ 4166:a1f7040b5a15

plugin XEP-0424: message retraction update: - follow specification update (with namespace bump) - retract from history on message reception for group chat - send bridge message
author Goffi <goffi@goffi.org>
date Thu, 30 Nov 2023 13:23:53 +0100
parents 7067b0d73183
children e92c32014024
comparison
equal deleted inserted replaced
4165:81faa85c9cfa 4166:a1f7040b5a15
165 ) 165 )
166 self.pubsub_service = APPubsubService(self) 166 self.pubsub_service = APPubsubService(self)
167 self.ad_hoc = APAdHocService(self) 167 self.ad_hoc = APAdHocService(self)
168 self.ap_events = APEvents(self) 168 self.ap_events = APEvents(self)
169 host.trigger.add("message_received", self._message_received_trigger, priority=-1000) 169 host.trigger.add("message_received", self._message_received_trigger, priority=-1000)
170 host.trigger.add("XEP-0424_retractReceived", self._on_message_retract) 170 host.trigger.add("XEP-0424_retract_received", self._on_message_retract)
171 host.trigger.add("XEP-0372_ref_received", self._on_reference_received) 171 host.trigger.add("XEP-0372_ref_received", self._on_reference_received)
172 172
173 host.bridge.add_method( 173 host.bridge.add_method(
174 "ap_send", 174 "ap_send",
175 ".plugin", 175 ".plugin",
2319 async def _on_message_retract( 2319 async def _on_message_retract(
2320 self, 2320 self,
2321 client: SatXMPPEntity, 2321 client: SatXMPPEntity,
2322 message_elt: domish.Element, 2322 message_elt: domish.Element,
2323 retract_elt: domish.Element, 2323 retract_elt: domish.Element,
2324 fastened_elts 2324 history: History
2325 ) -> bool: 2325 ) -> bool:
2326 if client != self.client: 2326 if client != self.client:
2327 return True 2327 return True
2328 from_jid = jid.JID(message_elt["from"]) 2328 from_jid = jid.JID(message_elt["from"])
2329 if not self.is_local(from_jid): 2329 if not self.is_local(from_jid):
2339 ) 2339 )
2340 ap_account = self._e.unescape(to_jid.user) 2340 ap_account = self._e.unescape(to_jid.user)
2341 actor_id = await self.get_ap_actor_id_from_account(ap_account) 2341 actor_id = await self.get_ap_actor_id_from_account(ap_account)
2342 inbox = await self.get_ap_inbox_from_id(actor_id, use_shared=False) 2342 inbox = await self.get_ap_inbox_from_id(actor_id, use_shared=False)
2343 url_actor, ap_item = await self.ap_delete_item( 2343 url_actor, ap_item = await self.ap_delete_item(
2344 from_jid.userhostJID(), None, fastened_elts.id, public=False 2344 from_jid.userhostJID(), None, retract_elt["id"], public=False
2345 ) 2345 )
2346 resp = await self.sign_and_post(inbox, url_actor, ap_item) 2346 resp = await self.sign_and_post(inbox, url_actor, ap_item)
2347 return False 2347 return False
2348 2348
2349 async def _on_reference_received( 2349 async def _on_reference_received(