Parcourir la source

Repair the canAddToDir logic

This could only work at the root of the sync folder where the record for
the parent folder would be invalid. Otherwise the negation would be
wrong... assuming you can add a file only if the permission is not
there.

Signed-off-by: Kevin Ottens <kevin.ottens@nextcloud.com>
Kevin Ottens il y a 5 ans
Parent
commit
26d62a9712
1 fichiers modifiés avec 3 ajouts et 2 suppressions
  1. 3 2
      src/gui/socketapi.cpp

+ 3 - 2
src/gui/socketapi.cpp

@@ -891,8 +891,9 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe
             const auto parentDir = fileData.parentFolder();
             const auto parentDir = fileData.parentFolder();
             const auto parentRecord = parentDir.journalRecord();
             const auto parentRecord = parentDir.journalRecord();
             const bool canAddToDir =
             const bool canAddToDir =
-                (fileInfo.isFile() && !parentRecord._remotePerm.hasPermission(RemotePermissions::CanAddFile))
-                || (fileInfo.isDir() && !parentRecord._remotePerm.hasPermission(RemotePermissions::CanAddSubDirectories));
+                !parentRecord.isValid() // We're likely at the root of the sync folder, got to assume we can add there
+                || (fileInfo.isFile() && parentRecord._remotePerm.hasPermission(RemotePermissions::CanAddFile))
+                || (fileInfo.isDir() && parentRecord._remotePerm.hasPermission(RemotePermissions::CanAddSubDirectories));
             const bool canChangeFile =
             const bool canChangeFile =
                 !isOnTheServer
                 !isOnTheServer
                 || (record._remotePerm.hasPermission(RemotePermissions::CanDelete)
                 || (record._remotePerm.hasPermission(RemotePermissions::CanDelete)