diff --git a/src/gui/tray/activitylistmodel.cpp b/src/gui/tray/activitylistmodel.cpp index 09336e0c8a443..d0866c440c506 100644 --- a/src/gui/tray/activitylistmodel.cpp +++ b/src/gui/tray/activitylistmodel.cpp @@ -883,7 +883,9 @@ QVariantList ActivityListModel::convertLinksToActionButtons(const Activity &acti // Use the isDismissable model role to present custom dismiss button if needed // Also don't show "View chat" for talk activities, default action will open chat anyway - if (activityLink._verb == "DELETE" || (activityLink._verb == "WEB" && activity._objectType == "chat")) { + const auto isUseCustomDeleteAction = activityLink._verb == "DELETE" + && activity._objectType != QStringLiteral("remote_share"); + if (isUseCustomDeleteAction || (activityLink._verb == "WEB" && activity._objectType == "chat")) { continue; } diff --git a/test/activitylistmodeltestutils.cpp b/test/activitylistmodeltestutils.cpp index 69c793895f730..2cdf5a003cba7 100644 --- a/test/activitylistmodeltestutils.cpp +++ b/test/activitylistmodeltestutils.cpp @@ -403,6 +403,41 @@ void FakeRemoteActivityStorage::initActivityData() _startingId++; } + + for (quint32 i = 0; i < _numItemsToInsert; i++) { + QJsonObject activity; + activity.insert(QStringLiteral("activity_id"), _startingId); + activity.insert(QStringLiteral("object_type"), "remote_share"); + activity.insert(QStringLiteral("subject"), QStringLiteral("You received document.docx as a remote share from admin@https://example.de")); + activity.insert(QStringLiteral("subjectRich"), QStringLiteral("You received {share} as a remote share from {user}")); + activity.insert(QStringLiteral("message"), QStringLiteral("")); + activity.insert(QStringLiteral("object_name"), QStringLiteral("")); + activity.insert(QStringLiteral("datetime"), QDateTime::currentDateTime().toString(Qt::ISODate)); + activity.insert(QStringLiteral("icon"), QStringLiteral("http://example.de/core/img/actions/share.svg")); + + QJsonArray actionsArray; + + QJsonObject primaryAction; + primaryAction.insert(QStringLiteral("label"), QStringLiteral("Accept")); + primaryAction.insert(QStringLiteral("link"), QStringLiteral("/ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/6")); + primaryAction.insert(QStringLiteral("type"), QStringLiteral("POST")); + primaryAction.insert(QStringLiteral("primary"), true); + actionsArray.push_back(primaryAction); + + QJsonObject secondaryAction; + secondaryAction.insert(QStringLiteral("label"), QStringLiteral("Decline")); + secondaryAction.insert(QStringLiteral("link"), QString(QStringLiteral("/ocs/v2.php/apps/files_sharing/api/v1/remote_shares/pending/6"))); + secondaryAction.insert(QStringLiteral("type"), QStringLiteral("DELETE")); + secondaryAction.insert(QStringLiteral("primary"), false); + actionsArray.push_back(secondaryAction); + + activity.insert(QStringLiteral("actions"), actionsArray); + + _activityData.push_back(activity); + + _startingId++; + } + _startingId--; } diff --git a/test/testactivitylistmodel.cpp b/test/testactivitylistmodel.cpp index f5a69b3ea8c59..d238e3dfd1f13 100644 --- a/test/testactivitylistmodel.cpp +++ b/test/testactivitylistmodel.cpp @@ -297,6 +297,14 @@ private slots: QVERIFY(actionsLinksContextMenu.isEmpty()); } + // remote shares must have 'Accept' and 'Decline' actions + if (objectType == QStringLiteral("remote_share")) { + QVERIFY(actionsLinks.size() == 2); + QVERIFY(actionsLinks[0].value()._primary); + QVERIFY(actionsLinks[0].value()._verb == QStringLiteral("POST")); + QVERIFY(actionsLinks[1].value()._verb == QStringLiteral("DELETE")); + } + if ((objectType == QStringLiteral("chat") || objectType == QStringLiteral("call") || objectType == QStringLiteral("room"))) {