From a804e6a9dc5d5b72c6ef4ae3b0851ded7a5f508d Mon Sep 17 00:00:00 2001 From: Goffi Date: Tue, 5 Mar 2024 17:31:49 +0100 Subject: [PATCH] plugin XEP-0234: fix action type when pre-flight file confirmation is confirmed: the `C.META_TYPE_FILE` can't be used in this case as it is a preflight and we don't have yet data such as progress ID. `C.META_TYPE_FILE` is used as a sub-type to help with dialog management in frontend. --- libervia/backend/core/constants.py | 2 ++ libervia/backend/plugins/plugin_xep_0234.py | 26 ++++++++++++++------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/libervia/backend/core/constants.py b/libervia/backend/core/constants.py index 5e1e9e7d..e75d476c 100644 --- a/libervia/backend/core/constants.py +++ b/libervia/backend/core/constants.py @@ -347,6 +347,8 @@ class Const(object): ) # //default = normal output (stderr or a file with twistd), path/to/file for a file (must be the first if used), //memory for memory (options can be put in parenthesis, e.g.: //memory(500) for a 500 lines memory) ## action constants ## + #: simple confirmation dialog + META_TYPE_CONFIRM = "confirm" META_TYPE_FILE = "file" META_TYPE_CALL = "call" META_TYPE_OVERWRITE = "overwrite" diff --git a/libervia/backend/plugins/plugin_xep_0234.py b/libervia/backend/plugins/plugin_xep_0234.py index c4dfc146..7d3de2d5 100644 --- a/libervia/backend/plugins/plugin_xep_0234.py +++ b/libervia/backend/plugins/plugin_xep_0234.py @@ -443,22 +443,27 @@ class XEP_0234(BaseApplicationHandler): ).format(peer_jid=peer_jid, human_name=self.human_name) confirm_title = D_("File sent from an unknown contact") action_type = C.META_TYPE_NOT_IN_ROSTER_LEAK + action_subtype = None else: confirm_msg = D_( - "{peer_jid} wants to send a file ro you, do you accept?" + "{peer_jid} wants to send a file to you, do you accept?" ).format(peer_jid=peer_jid) confirm_title = D_("File Proposed") - action_type = C.META_TYPE_FILE + action_type = C.META_TYPE_CONFIRM + action_subtype = C.META_TYPE_FILE + action_extra = { + "type": action_type, + "session_id": session_id, + "from_jid": peer_jid.full(), + } + if action_subtype is not None: + action_extra["subtype"] = action_subtype accepted = await xml_tools.defer_confirm( self.host, confirm_msg, confirm_title, profile=client.profile, - action_extra={ - "type": action_type, - "session_id": session_id, - "from_jid": peer_jid.full(), - }, + action_extra=action_extra ) if accepted: session["file_accepted"] = True @@ -546,7 +551,12 @@ class XEP_0234(BaseApplicationHandler): return desc_elt async def jingle_request_confirmation( - self, client, action, session, content_name, desc_elt + self, + client: SatXMPPEntity, + action: str, + session: dict, + content_name: str, + desc_elt: domish.Element, ): """This method request confirmation for a jingle session""" content_data = session["contents"][content_name]