properly extract the file id when querying server
authorMatthieu Gallien <matthieu.gallien@nextcloud.com>
Wed, 27 Oct 2021 10:56:09 +0000 (12:56 +0200)
committerMatthieu Gallien (Rebase PR Action) <matthieu_gallien@yahoo.fr>
Tue, 2 Nov 2021 08:15:54 +0000 (08:15 +0000)
use the proper local file id to get the e2ee meta data

Signed-off-by: Matthieu Gallien <matthieu.gallien@nextcloud.com>
src/libsync/discoveryphase.cpp
src/libsync/discoveryphase.h

index 208b6e2ff53aa8455c599596b3c9f6fea04c416b..5206f7e908489cc78bbca436cf9fcfd4c26eca01 100644 (file)
@@ -351,6 +351,7 @@ void DiscoverySingleDirectoryJob::start()
           << "getetag"
           << "http://owncloud.org/ns:size"
           << "http://owncloud.org/ns:id"
+          << "http://owncloud.org/ns:fileid"
           << "http://owncloud.org/ns:downloadURL"
           << "http://owncloud.org/ns:dDC"
           << "http://owncloud.org/ns:permissions"
@@ -453,6 +454,9 @@ void DiscoverySingleDirectoryJob::directoryListingIteratedSlot(const QString &fi
                 _dataFingerprint = "[empty]";
             }
         }
+        if (map.contains(QStringLiteral("fileid"))) {
+            _localFileId = map.value(QStringLiteral("fileid")).toUtf8();
+        }
         if (map.contains("id")) {
             _fileId = map.value("id").toUtf8();
         }
@@ -529,7 +533,7 @@ void DiscoverySingleDirectoryJob::lsJobFinishedWithErrorSlot(QNetworkReply *r)
 
 void DiscoverySingleDirectoryJob::fetchE2eMetadata()
 {
-    auto job = new GetMetadataApiJob(_account, _fileId);
+    const auto job = new GetMetadataApiJob(_account, _localFileId);
     connect(job, &GetMetadataApiJob::jsonReceived,
             this, &DiscoverySingleDirectoryJob::metadataReceived);
     connect(job, &GetMetadataApiJob::error,
index ac599a797f8043f60ed4fe625cb0441cc534a330..a028073416ec00545d7f5a6a5b7e38a2e93ea650 100644 (file)
@@ -144,6 +144,7 @@ private:
     QString _subPath;
     QByteArray _firstEtag;
     QByteArray _fileId;
+    QByteArray _localFileId;
     AccountPtr _account;
     // The first result is for the directory itself and need to be ignored.
     // This flag is true if it was already ignored.