From 0e284bc14902ade4e3b2b00bac6e21fc2e3209b7 Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 2 Sep 2026 22:30:25 +0800 Subject: [PATCH 1/2] fix(shares): Only acquire shares for target path Signed-off-by: Claudio Cambra --- src/gui/sharemanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gui/sharemanager.cpp b/src/gui/sharemanager.cpp index 9658bafdc093f..8545c7e0cd7d4 100644 --- a/src/gui/sharemanager.cpp +++ b/src/gui/sharemanager.cpp @@ -473,7 +473,7 @@ void ShareManager::createShare(const QString &path, connect(job, &OcsJob::ocsError, this, &ShareManager::slotOcsError); job->createShare(path, shareType, shareWith, validPermissions, password); }); - job->getSharedWithMe(); + job->getSharedWithMe(path); } void ShareManager::createE2EeShareJob(const QString &fullRemotePath, From 076e8398f88cfa81a70f7175a2645dcde13f13ae Mon Sep 17 00:00:00 2001 From: Claudio Cambra Date: Wed, 2 Sep 2026 22:31:04 +0800 Subject: [PATCH 2/2] fix(shares): Test that shares fetch happens only for a target path Signed-off-by: Claudio Cambra --- test/sharetestutils.cpp | 15 +++++++++++++++ test/sharetestutils.h | 3 +++ test/testsharemodel.cpp | 15 ++++++++++++--- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/test/sharetestutils.cpp b/test/sharetestutils.cpp index de19fd2ab1fb3..8d55299b4402e 100644 --- a/test/sharetestutils.cpp +++ b/test/sharetestutils.cpp @@ -391,8 +391,13 @@ QNetworkReply *ShareTestHelper::handleShareGetOperation(const QNetworkAccessMana const auto urlQuery = QUrlQuery(req.url()); const auto pathParam = urlQuery.queryItemValue(QStringLiteral("path")); const auto resharesParam = urlQuery.queryItemValue(QStringLiteral("reshares")); + const auto sharedWithMeParam = urlQuery.queryItemValue(QStringLiteral("shared_with_me")); const auto formatParam = urlQuery.queryItemValue(QStringLiteral("format")); + if (sharedWithMeParam == QStringLiteral("true")) { + _sharedWithMeRequestUrls.append(req.url()); + } + if (formatParam != QStringLiteral("json") || (!pathParam.isEmpty() && !pathParam.endsWith(QString(testFileName)))) { reply = new FakeErrorReply(op, req, this, 400, _fake400Response); } else if (reqPath.contains(QStringLiteral("ocs/v2.php/apps/files_sharing/api/v1/shares"))) { @@ -420,6 +425,16 @@ int ShareTestHelper::shareCount() const return _sharesReplyData.count(); } +const QList &ShareTestHelper::sharedWithMeRequestUrls() const +{ + return _sharedWithMeRequestUrls; +} + +void ShareTestHelper::resetSharedWithMeRequestUrls() +{ + _sharedWithMeRequestUrls.clear(); +} + void ShareTestHelper::appendShareReplyData(const FakeShareDefinition &definition) { _sharesReplyData.append(definition.toShareJsonObject()); diff --git a/test/sharetestutils.h b/test/sharetestutils.h index 59aea1c749d53..f58de185668ff 100644 --- a/test/sharetestutils.h +++ b/test/sharetestutils.h @@ -96,6 +96,8 @@ class ShareTestHelper : public QObject const QByteArray createNewShare(const Share::ShareType shareType, const QString &shareWith, const QString &password); [[nodiscard]] int shareCount() const; + [[nodiscard]] const QList &sharedWithMeRequestUrls() const; + void resetSharedWithMeRequestUrls(); Q_SIGNALS: void setupSucceeded(); @@ -122,6 +124,7 @@ private Q_SLOTS: QByteArray _fake200JsonResponse = R"({"ocs":{"data":[],"meta":{"message":"OK","status":"ok","statuscode":200}}})"; QJsonArray _sharesReplyData; + QList _sharedWithMeRequestUrls; QVariantMap _fakeCapabilities; QSet _liveShareIds; }; diff --git a/test/testsharemodel.cpp b/test/testsharemodel.cpp index 200feb8fe8bad..4842357099867 100644 --- a/test/testsharemodel.cpp +++ b/test/testsharemodel.cpp @@ -5,13 +5,14 @@ #include "gui/filedetails/sharemodel.h" -#include #include -#include +#include #include #include -#include +#include +#include #include +#include #include "sharetestutils.h" #include "libsync/theme.h" @@ -388,6 +389,7 @@ private Q_SLOTS: QVERIFY(sharesChanged.wait(5000)); QCOMPARE(helper.shareCount(), 1); // Check our test is working! QCOMPARE(model.rowCount(), helper.shareCount() + 1); // Internal link share! + helper.resetSharedWithMeRequestUrls(); // Test if it gets added model.createNewLinkShare(); @@ -406,6 +408,13 @@ private Q_SLOTS: QCOMPARE(helper.shareCount(), 3); // Check our test is working! QCOMPARE(model.rowCount(), helper.shareCount() + 1); // Internal link share! + QVERIFY(!helper.sharedWithMeRequestUrls().isEmpty()); + for (const auto &requestUrl : helper.sharedWithMeRequestUrls()) { + const auto requestedPath = QUrlQuery(requestUrl).queryItemValue(QStringLiteral("path")); + QVERIFY2(!requestedPath.isEmpty(), qPrintable(requestUrl.toString())); + QVERIFY2(requestedPath.endsWith(QString::fromLatin1(ShareTestHelper::testFileName)), qPrintable(requestUrl.toString())); + } + // Test if it's the type we wanted const auto newUserGroupShareIndex = model.index(model.rowCount() - 1, 0, {}); QCOMPARE(newUserGroupShareIndex.data(ShareModel::ShareTypeRole).toInt(), Share::TypeEmail);