Resolve symlinks when checking for registered paths.
authorDaniel Vedder <d.vedder@web.de>
Sat, 2 May 2020 12:41:54 +0000 (14:41 +0200)
committerDaniel Vedder <d.vedder@web.de>
Sat, 2 May 2020 12:48:51 +0000 (14:48 +0200)
Fixes issue #1948: https://github.com/nextcloud/desktop/issues/1948
The client already resolves symlinks when adding new paths to the
sync-list, but the Nautilus plugin did not do this yet, causing it
to not recognise synced folders if they were accessed via a symlink.

Signed-off-by: Daniel Vedder <d.vedder@web.de>
shell_integration/nautilus/syncstate.py

index 84a13161c3da4b3886c2b0dc65841a2b86a7450b..c90c20aa4b00f08ab12448544538ca057580aa47 100644 (file)
@@ -191,11 +191,12 @@ class MenuExtension(GObject.GObject, Nautilus.MenuProvider):
     def check_registered_paths(self, filename):
         topLevelFolder = False
         internalFile = False
+        absfilename = os.path.realpath(filename)
         for reg_path in socketConnect.registered_paths:
-            if filename == reg_path:
+            if absfilename == reg_path:
                 topLevelFolder = True
                 break
-            if filename.startswith(reg_path):
+            if absfilename.startswith(reg_path):
                 internalFile = True
                 # you can't have a registered path below another so it is save to break here
                 break
@@ -447,6 +448,7 @@ class SyncStateExtension(GObject.GObject, Nautilus.InfoProvider):
             return
 
         filename = get_local_path(item.get_uri())
+        filename = os.path.realpath(filename)
         if item.is_directory():
             filename += os.sep