Skip to content

Commit 133a54e

Browse files
committed
App: smarter actions refresh
[skip ci]
1 parent ba424d5 commit 133a54e

1 file changed

Lines changed: 29 additions & 5 deletions

File tree

scripts/gdrive_app.py

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -76,19 +76,21 @@ def mock_trange(*args, **kwargs):
7676
gdrive_base.trange = original_trange
7777

7878
class 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

8283
class 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

Comments
 (0)