Mercurial > libervia-backend
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( |