cli (file/receive): handle CONFIRM dialog received in pre-flight.
This commit is contained in:
parent
8db12deaff
commit
dec2fa48bc
1 changed files with 20 additions and 2 deletions
|
|
@ -303,6 +303,7 @@ class Receive(base.CommandAnswering):
|
|||
)
|
||||
self._overwrite_refused = False # True when one overwrite as already been refused
|
||||
self.action_callbacks = {
|
||||
C.META_TYPE_CONFIRM: self.on_confirm_action,
|
||||
C.META_TYPE_FILE: self.on_file_action,
|
||||
C.META_TYPE_OVERWRITE: self.on_overwrite_action,
|
||||
C.META_TYPE_NOT_IN_ROSTER_LEAK: self.on_not_in_roster_action,
|
||||
|
|
@ -368,6 +369,23 @@ class Receive(base.CommandAnswering):
|
|||
self.disp(_("Invalid XMLUI received"), error=True)
|
||||
return xmlui_id
|
||||
|
||||
async def on_confirm_action(self, action_data, action_id, security_limit, profile):
|
||||
xmlui_id = self.get_xmlui_id(action_data)
|
||||
if xmlui_id is None:
|
||||
return self.host.quit_from_signal(1)
|
||||
if action_data.get("subtype") != C.META_TYPE_FILE:
|
||||
self.disp(_("Ignoring confirm dialog unrelated to file."), 1)
|
||||
return
|
||||
|
||||
# we always accept preflight confirmation dialog, as for now a second dialog is
|
||||
# always sent
|
||||
# FIXME: real confirmation should be done here, and second dialog should not be
|
||||
# sent from backend
|
||||
xmlui_data = {"answer": C.BOOL_TRUE}
|
||||
await self.host.bridge.action_launch(
|
||||
xmlui_id, data_format.serialise(xmlui_data), profile_key=profile
|
||||
)
|
||||
|
||||
async def on_file_action(self, action_data, action_id, security_limit, profile):
|
||||
xmlui_id = self.get_xmlui_id(action_data)
|
||||
if xmlui_id is None:
|
||||
|
|
@ -429,7 +447,7 @@ class Receive(base.CommandAnswering):
|
|||
except ValueError:
|
||||
self.disp(
|
||||
_('invalid "from_jid" value received, ignoring: {value}').format(
|
||||
value=from_jid
|
||||
value=action_data["from_jid"]
|
||||
),
|
||||
error=True,
|
||||
)
|
||||
|
|
@ -459,7 +477,7 @@ class Receive(base.CommandAnswering):
|
|||
self.bare_jids = [jid.JID(jid_).bare for jid_ in self.args.jids]
|
||||
self.path = os.path.abspath(self.args.path)
|
||||
if not os.path.isdir(self.path):
|
||||
self.disp(_("Given path is not a directory !", error=True))
|
||||
self.disp(_("Given path is not a directory !"), error=True)
|
||||
self.host.quit(C.EXIT_BAD_ARG)
|
||||
if self.args.multiple:
|
||||
self.host.quit_on_progress_end = False
|
||||
|
|
|
|||
Loading…
Reference in a new issue