feat: voortgang delete in headerbar
This commit is contained in:
@@ -79,6 +79,14 @@ class TaskRunner:
|
||||
)
|
||||
thread.start()
|
||||
|
||||
def enqueue_delete_path(self, task_id: str, target: str, kind: str, recursive: bool) -> None:
|
||||
thread = threading.Thread(
|
||||
target=self._run_delete_path,
|
||||
args=(task_id, target, kind, recursive),
|
||||
daemon=True,
|
||||
)
|
||||
thread.start()
|
||||
|
||||
def enqueue_archive_prepare(self, worker) -> None:
|
||||
thread = threading.Thread(
|
||||
target=worker,
|
||||
@@ -381,6 +389,41 @@ class TaskRunner:
|
||||
)
|
||||
self._update_history_completed(task_id)
|
||||
|
||||
def _run_delete_path(self, task_id: str, target: str, kind: str, recursive: bool) -> None:
|
||||
self._repository.mark_running(
|
||||
task_id=task_id,
|
||||
done_items=0,
|
||||
total_items=1,
|
||||
current_item=target,
|
||||
)
|
||||
|
||||
try:
|
||||
path = Path(target)
|
||||
if kind == "file":
|
||||
self._filesystem.delete_file(path)
|
||||
elif recursive:
|
||||
self._filesystem.delete_directory_recursive(path)
|
||||
else:
|
||||
self._filesystem.delete_empty_directory(path)
|
||||
self._repository.mark_completed(
|
||||
task_id=task_id,
|
||||
done_items=1,
|
||||
total_items=1,
|
||||
)
|
||||
self._update_history_completed(task_id)
|
||||
except OSError as exc:
|
||||
self._repository.mark_failed(
|
||||
task_id=task_id,
|
||||
error_code="io_error",
|
||||
error_message=str(exc),
|
||||
failed_item=target,
|
||||
done_bytes=None,
|
||||
total_bytes=None,
|
||||
done_items=0,
|
||||
total_items=1,
|
||||
)
|
||||
self._update_history_failed(task_id, str(exc))
|
||||
|
||||
def _duplicate_directory(self, source: Path, destination: Path) -> None:
|
||||
destination.mkdir()
|
||||
copied_directories: list[tuple[Path, Path]] = [(source, destination)]
|
||||
|
||||
Reference in New Issue
Block a user