mirror of
https://github.com/nextcloud/desktop.git
synced 2024-10-23 12:55:44 +03:00
Overlays Nautilus: Handle UNREGISTER_PATH and do proper reconnect.
This is needed to fix #2073
This commit is contained in:
parent
75101a0319
commit
fef0d0b31c
1 changed files with 26 additions and 15 deletions
|
@ -51,10 +51,7 @@ class ownCloudExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoP
|
|||
return self.nautilusVFSFile_table[path]
|
||||
else:
|
||||
return None
|
||||
|
||||
def callback_update_file( self, path ):
|
||||
print "Got an update callback for " + path
|
||||
|
||||
|
||||
def askForOverlay(self, file):
|
||||
if os.path.isdir(file):
|
||||
folderStatus = self.sendCommand("RETRIEVE_FOLDER_STATUS:"+file+"\n");
|
||||
|
@ -62,6 +59,17 @@ class ownCloudExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoP
|
|||
if os.path.isfile(file):
|
||||
fileStatus = self.sendCommand("RETRIEVE_FILE_STATUS:"+file+"\n");
|
||||
|
||||
def invalidate_items_underneath( self, path ):
|
||||
update_items = []
|
||||
for p in self.nautilusVFSFile_table:
|
||||
if p == path or p.startswith( path ):
|
||||
item = self.nautilusVFSFile_table[p]
|
||||
update_items.append(item)
|
||||
|
||||
for item in update_items:
|
||||
item.invalidate_extension_info()
|
||||
# self.update_file_info(item)
|
||||
|
||||
# Handles a single line of server respoonse and sets the emblem
|
||||
def handle_server_response(self, l):
|
||||
Emblems = { 'OK' : 'oC_ok',
|
||||
|
@ -94,18 +102,23 @@ class ownCloudExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoP
|
|||
elif action == 'UPDATE_VIEW':
|
||||
# Search all items underneath this path and invalidate them
|
||||
if parts[1] in self.registered_paths:
|
||||
update_items = []
|
||||
for p in self.nautilusVFSFile_table:
|
||||
if p == parts[1] or p.startswith( parts[1] ):
|
||||
item = self.nautilusVFSFile_table[p]
|
||||
update_items.append(item)
|
||||
|
||||
for item in update_items:
|
||||
item.invalidate_extension_info()
|
||||
# self.update_file_info(item)
|
||||
self.invalidate_items_underneath( parts[1] )
|
||||
|
||||
elif action == 'REGISTER_PATH':
|
||||
self.registered_paths[parts[1]] = 1
|
||||
self.invalidate_items_underneath( parts[1] )
|
||||
elif action == 'UNREGISTER_PATH':
|
||||
del self.registered_paths[parts[1]]
|
||||
self.invalidate_items_underneath( parts[1] )
|
||||
|
||||
# check if there are non pathes any more, if so, its usual
|
||||
# that mirall went away. Try reconnect.
|
||||
if not self.registered_paths:
|
||||
self.sock.close()
|
||||
self.connected = False
|
||||
GObject.source_remove( self.watch_id )
|
||||
GObject.timeout_add(5000, self.connectToOwnCloud)
|
||||
|
||||
else:
|
||||
# print "We got unknown action " + action
|
||||
1
|
||||
|
@ -136,8 +149,6 @@ class ownCloudExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoP
|
|||
def get_local_path(self, path):
|
||||
return path.replace("file://", "")
|
||||
|
||||
|
||||
|
||||
def update_file_info(self, item):
|
||||
if item.get_uri_scheme() != 'file':
|
||||
return
|
||||
|
|
Loading…
Reference in a new issue