@@ -76,19 +76,21 @@ def mock_trange(*args, **kwargs):
7676 gdrive_base .trange = original_trange
7777
7878class GDriveActionSignals (QObject ):
79- finished = Signal ()
80- error = Signal (str )
79+ # Signal can only take simple types, so we can't use `set[str]`
80+ finished = Signal (set ) # the impacted folder ids
81+ error = Signal (str ) # the error message
8182
8283class GDriveAction (QRunnable ):
8384 def __init__ (self ):
8485 super ().__init__ ()
8586 self .signals = GDriveActionSignals ()
87+ self .impacted_folders : set [str ] = set ()
8688
8789 @Slot ()
8890 def run (self ):
8991 try :
9092 self .execute ()
91- self .signals .finished .emit ()
93+ self .signals .finished .emit (self . impacted_folders )
9294 except Exception as e :
9395 self .signals .error .emit (str (e ))
9496
@@ -101,6 +103,13 @@ def __init__(self, gcache: DriveCache, file_id: str, new_name: str):
101103 self .gcache = gcache
102104 self .file_id = file_id
103105 self .new_name = new_name
106+
107+ item = self .gcache .get_item (file_id )
108+ if item :
109+ if item .get ('parent_id' ):
110+ self .impacted_folders .add (item ['parent_id' ])
111+ if item .get ('mimeType' ) == 'application/vnd.google-apps.folder' :
112+ self .impacted_folders .add (file_id )
104113
105114 def execute (self ):
106115 self .gcache .rename_file (self .file_id , self .new_name )
@@ -113,6 +122,19 @@ def __init__(self, gcache: DriveCache, file_id: str, destination: str | tuple[st
113122 self .destination = destination
114123 self .previous_parents = previous_parents
115124
125+ if previous_parents :
126+ self .impacted_folders .update (previous_parents )
127+ else :
128+ item = self .gcache .get_item (file_id )
129+ if item and item .get ('parent_id' ):
130+ self .impacted_folders .add (item ['parent_id' ])
131+
132+ if isinstance (destination , tuple ):
133+ if destination [0 ]: self .impacted_folders .add (destination [0 ])
134+ if destination [1 ]: self .impacted_folders .add (destination [1 ])
135+ else :
136+ self .impacted_folders .add (destination )
137+
116138 def execute (self ):
117139 if isinstance (self .destination , tuple ):
118140 import gdrive
@@ -126,6 +148,7 @@ def __init__(self, gcache: DriveCache, parent_id: str, folder_name: str):
126148 self .gcache = gcache
127149 self .parent_id = parent_id
128150 self .folder_name = folder_name
151+ self .impacted_folders .add (parent_id )
129152
130153 def execute (self ):
131154 self .gcache .create_folder (folder_name = self .folder_name , parent_id = self .parent_id )
@@ -1066,10 +1089,11 @@ def _update_gdrive_progress(self):
10661089 self .gdrive_progress_dialog = None
10671090 self .gdrive_tasks_total = 0
10681091 self .gdrive_tasks_completed = 0
1069- self .refresh ()
10701092
1071- def _on_gdrive_action_finished (self ):
1093+ def _on_gdrive_action_finished (self , impacted_folders : set [ str ] ):
10721094 self .gdrive_tasks_completed += 1
1095+ if self .current_folder_id in impacted_folders :
1096+ self .refresh ()
10731097 self ._update_gdrive_progress ()
10741098
10751099 def _on_gdrive_action_error (self , error_msg ):
0 commit comments