Mercurial > libervia-backend
diff sat/plugins/plugin_xep_0277.py @ 3519:02eec2a5b5f9
plugin XEP-0060, XEP-0277: new rename methods (`psItemRename`, `mbRename`):
Those methods recreate an item to given new ID, and if successful, delete the former one.
author | Goffi <goffi@goffi.org> |
---|---|
date | Sat, 01 May 2021 18:37:57 +0200 |
parents | 753d151da886 |
children | 13e7ef106589 |
line wrap: on
line diff
--- a/sat/plugins/plugin_xep_0277.py Sat May 01 18:36:13 2021 +0200 +++ b/sat/plugins/plugin_xep_0277.py Sat May 01 18:37:57 2021 +0200 @@ -124,6 +124,14 @@ async_=True, ) host.bridge.addMethod( + "mbRename", + ".plugin", + in_sign="sssss", + out_sign="", + method=self._mbRename, + async_=True, + ) + host.bridge.addMethod( "mbSetAccess", ".plugin", in_sign="ss", @@ -813,7 +821,14 @@ def friendlyId(self, data): """Generate a user friendly id from title or content""" - id_base = regex.urlFriendlyText(data.get('title') or data.get('content', '')) + # TODO: rich content should be converted to plain text + id_base = regex.urlFriendlyText( + data.get('title') + or data.get('title_rich') + or data.get('content') + or data.get('content_rich') + or '' + ) return f"{id_base}-{token_urlsafe(3)}" def _mbSend(self, service, node, data, profile_key): @@ -954,6 +969,27 @@ items_data, partial(self.item2mbdata, client, service=service, node=node)) defer.returnValue(mb_data) + def _mbRename(self, service, node, item_id, new_id, profile_key): + return defer.ensureDeferred(self.mbRename( + self.host.getClient(profile_key), + jid.JID(service) if service else None, + node or None, + item_id, + new_id + )) + + async def mbRename( + self, + client: SatXMPPEntity, + service: Optional[jid.JID], + node: Optional[str], + item_id: str, + new_id: str + ) -> None: + if not node: + node = NS_MICROBLOG + await self._p.renameItem(client, service, node, item_id, new_id) + def parseCommentUrl(self, node_url): """Parse a XMPP URI