From 4661739519294a16a8263d8f0b8b8f9c4fd5698a Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Mon, 30 Mar 2026 14:56:50 +0200 Subject: [PATCH 1/2] fix(integration): reset response label after checks are done. Signed-off-by: Camila Ayres --- src/gui/integration/fileactionsmodel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/gui/integration/fileactionsmodel.cpp b/src/gui/integration/fileactionsmodel.cpp index a8e74f54ebe6e..019bde1f4581e 100644 --- a/src/gui/integration/fileactionsmodel.cpp +++ b/src/gui/integration/fileactionsmodel.cpp @@ -320,6 +320,7 @@ void FileActionsModel::parseEndpoints() } resetActions(actions); + setResponse({}); qCDebug(lcFileActions) << "File" << _localPath << "has" << actions.size() << "actions available."; From 23bdf780020618b4250c91d7c6f8701ca5143805 Mon Sep 17 00:00:00 2001 From: Camila Ayres Date: Mon, 30 Mar 2026 14:57:35 +0200 Subject: [PATCH 2/2] test(integration): check for empty file id. The issue was only on macOS file provider. Signed-off-by: Camila Ayres --- test/testfileactionsmodel.cpp | 40 +++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/test/testfileactionsmodel.cpp b/test/testfileactionsmodel.cpp index 73f330cb7cb0b..5269416b92a3c 100644 --- a/test/testfileactionsmodel.cpp +++ b/test/testfileactionsmodel.cpp @@ -308,6 +308,46 @@ private slots: } } } + +#ifdef BUILD_FILE_PROVIDER_MODULE + void testEmptyFileId() + { + _model.setAccountState(&_fakeFolder->accountState()); + const auto unsyncedFile = QStringLiteral("unsynced.odt"); + _model.setLocalPath(_fakeFolder->localPath() + unsyncedFile); + QVERIFY(_model.fileId().isEmpty()); + QCOMPARE(_model.rowCount(), 0); + _model.parseEndpoints(); + QVERIFY(_model.responseLabel().contains(QStringLiteral("The file ID is empty"))); + + _fakeFolder->localModifier().insert(_fakeFolder->localPath() + unsyncedFile); + QVERIFY(_fakeFolder->syncOnce()); + const auto fileInfo = _fakeFolder->remoteModifier().find(unsyncedFile); + QVERIFY(fileInfo); + QVERIFY(!fileInfo->fileId.isEmpty()); + _model.setFileId(fileInfo->fileId); + QCOMPARE(_model.fileId(), fileInfo->fileId); + _model.parseEndpoints(); + QVERIFY(_model.responseLabel().isEmpty()); + QCOMPARE(_model.rowCount(), 6); + + FileActionsModel fileProviderModel; + QSignalSpy fileActionModelChangedSpy(&fileProviderModel, &FileActionsModel::fileActionModelChanged); + fileProviderModel.setAccountState(&_fakeFolder->accountState()); + fileProviderModel.setLocalPath(QDir::tempPath() + QStringLiteral("/fileprovider.odt")); + QVERIFY(fileProviderModel.fileId().isEmpty()); + QCOMPARE(fileProviderModel.rowCount(), 0); + + fileProviderModel.parseEndpoints(); + QVERIFY(fileProviderModel.responseLabel().contains(QStringLiteral("The file ID is empty"))); + + fileProviderModel.setFileId("test-file-provider-id"); + QCOMPARE(fileProviderModel.fileId(), QByteArray("test-file-provider-id")); + QVERIFY(fileActionModelChangedSpy.count() > 0); + QVERIFY(fileProviderModel.rowCount() > 0); + QVERIFY(fileProviderModel.responseLabel().isEmpty()); + } +#endif }; QTEST_MAIN(TestFileActionsModel)