changeset 4220:5a0bddfa34ac

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.
author Goffi <goffi@goffi.org>
date Tue, 05 Mar 2024 17:31:49 +0100
parents 1b5cf2ee1d86
children 2b000790b197
files libervia/backend/core/constants.py libervia/backend/plugins/plugin_xep_0234.py
diffstat 2 files changed, 20 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/libervia/backend/core/constants.py	Tue Mar 05 17:31:36 2024 +0100
+++ b/libervia/backend/core/constants.py	Tue Mar 05 17:31:49 2024 +0100
@@ -347,6 +347,8 @@
     )  # //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"
--- a/libervia/backend/plugins/plugin_xep_0234.py	Tue Mar 05 17:31:36 2024 +0100
+++ b/libervia/backend/plugins/plugin_xep_0234.py	Tue Mar 05 17:31:49 2024 +0100
@@ -443,22 +443,27 @@
             ).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 @@
         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]