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
|
@ -52,9 +52,6 @@ class ownCloudExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoP
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def callback_update_file( self, path ):
|
|
||||||
print "Got an update callback for " + path
|
|
||||||
|
|
||||||
def askForOverlay(self, file):
|
def askForOverlay(self, file):
|
||||||
if os.path.isdir(file):
|
if os.path.isdir(file):
|
||||||
folderStatus = self.sendCommand("RETRIEVE_FOLDER_STATUS:"+file+"\n");
|
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):
|
if os.path.isfile(file):
|
||||||
fileStatus = self.sendCommand("RETRIEVE_FILE_STATUS:"+file+"\n");
|
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
|
# Handles a single line of server respoonse and sets the emblem
|
||||||
def handle_server_response(self, l):
|
def handle_server_response(self, l):
|
||||||
Emblems = { 'OK' : 'oC_ok',
|
Emblems = { 'OK' : 'oC_ok',
|
||||||
|
@ -94,18 +102,23 @@ class ownCloudExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoP
|
||||||
elif action == 'UPDATE_VIEW':
|
elif action == 'UPDATE_VIEW':
|
||||||
# Search all items underneath this path and invalidate them
|
# Search all items underneath this path and invalidate them
|
||||||
if parts[1] in self.registered_paths:
|
if parts[1] in self.registered_paths:
|
||||||
update_items = []
|
self.invalidate_items_underneath( parts[1] )
|
||||||
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)
|
|
||||||
|
|
||||||
elif action == 'REGISTER_PATH':
|
elif action == 'REGISTER_PATH':
|
||||||
self.registered_paths[parts[1]] = 1
|
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:
|
else:
|
||||||
# print "We got unknown action " + action
|
# print "We got unknown action " + action
|
||||||
1
|
1
|
||||||
|
@ -136,8 +149,6 @@ class ownCloudExtension(GObject.GObject, Nautilus.ColumnProvider, Nautilus.InfoP
|
||||||
def get_local_path(self, path):
|
def get_local_path(self, path):
|
||||||
return path.replace("file://", "")
|
return path.replace("file://", "")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def update_file_info(self, item):
|
def update_file_info(self, item):
|
||||||
if item.get_uri_scheme() != 'file':
|
if item.get_uri_scheme() != 'file':
|
||||||
return
|
return
|
||||||
|
|
Loading…
Reference in a new issue