From 60ba050ce7c0bf650d23d597f7a11217213b5e48 Mon Sep 17 00:00:00 2001 From: Aleix Pol Date: Thu, 16 Mar 2023 17:14:31 +0100 Subject: [PATCH] offline: Make sure we allow for interactive authorization Otherwise it might result in org.freedesktop.DBus.Error.InteractiveAuthorizationRequired which PackageKit already contemplates. --- src/offline.cpp | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/src/offline.cpp b/src/offline.cpp index 01d0986..b28ccb7 100644 --- a/src/offline.cpp +++ b/src/offline.cpp @@ -92,7 +92,15 @@ QDBusPendingReply<> Offline::trigger(Action action) }; Q_ASSERT(!actionStr.isEmpty()); - return d->iface.Trigger(actionStr); + // Manually invoke dbus because the qdbusxml2cpp does not allow + // setting the ALLOW_INTERACTIVE_AUTHORIZATION flag + auto msg = QDBusMessage::createMethodCall(PK_NAME, + PK_PATH, + PK_OFFLINE_INTERFACE, + QStringLiteral("Trigger")); + msg << actionStr; + msg.setInteractiveAuthorizationAllowed(true); + return QDBusConnection::systemBus().asyncCall(msg); } QDBusPendingReply<> Offline::triggerUpgrade(Action action) @@ -112,19 +120,39 @@ QDBusPendingReply<> Offline::triggerUpgrade(Action action) }; Q_ASSERT(!actionStr.isEmpty()); - return d->iface.TriggerUpgrade(actionStr); + // Manually invoke dbus because the qdbusxml2cpp does not allow + // setting the ALLOW_INTERACTIVE_AUTHORIZATION flag + auto msg = QDBusMessage::createMethodCall(PK_NAME, + PK_PATH, + PK_OFFLINE_INTERFACE, + QStringLiteral("TriggerUpgrade")); + msg << actionStr; + msg.setInteractiveAuthorizationAllowed(true); + return QDBusConnection::systemBus().asyncCall(msg, 24 * 60 * 1000 * 1000); } QDBusPendingReply<> Offline::cancel() { - Q_D(Offline); - return d->iface.Cancel(); + // Manually invoke dbus because the qdbusxml2cpp does not allow + // setting the ALLOW_INTERACTIVE_AUTHORIZATION flag + auto msg = QDBusMessage::createMethodCall(PK_NAME, + PK_PATH, + PK_OFFLINE_INTERFACE, + QStringLiteral("Cancel")); + msg.setInteractiveAuthorizationAllowed(true); + return QDBusConnection::systemBus().asyncCall(msg); } QDBusPendingReply<> Offline::clearResults() { - Q_D(Offline); - return d->iface.ClearResults(); + // Manually invoke dbus because the qdbusxml2cpp does not allow + // setting the ALLOW_INTERACTIVE_AUTHORIZATION flag + auto msg = QDBusMessage::createMethodCall(PK_NAME, + PK_PATH, + PK_OFFLINE_INTERFACE, + QStringLiteral("ClearResults")); + msg.setInteractiveAuthorizationAllowed(true); + return QDBusConnection::systemBus().asyncCall(msg); } void Offline::getPrepared()