Repair the canAddToDir logic
authorKevin Ottens <kevin.ottens@nextcloud.com>
Wed, 7 Oct 2020 15:47:48 +0000 (17:47 +0200)
committerKevin Ottens <kevin.ottens@nextcloud.com>
Thu, 22 Oct 2020 14:40:44 +0000 (16:40 +0200)
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>
src/gui/socketapi.cpp

index 3d9b43d13bb73e94acded39ccff1db567dae0227..e7bb0fa476dcc702a3d4e96cb73c1a2c7eabc717 100644 (file)
@@ -891,8 +891,9 @@ void SocketApi::command_GET_MENU_ITEMS(const QString &argument, OCC::SocketListe
             const auto parentDir = fileData.parentFolder();
             const auto parentRecord = parentDir.journalRecord();
             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 =
                 !isOnTheServer
                 || (record._remotePerm.hasPermission(RemotePermissions::CanDelete)