Skip to content

fix: 修复文件树删除失效问题并优化删除响应速度 - #117

Merged
1lck merged 3 commits into
preview/0.3.0from
codex/fix-issue-86
Aug 17, 2026
Merged

fix: 修复文件树删除失效问题并优化删除响应速度#117
1lck merged 3 commits into
preview/0.3.0from
codex/fix-issue-86

Conversation

@xiaoyumuxi

Copy link
Copy Markdown
Collaborator

概述

修复文件树右键删除操作无法真正删除本地文件的问题,并将删除流程优化为乐观更新,减少确认删除后的界面卡顿。

Fixes #86

问题原因

SwiftUI 在关闭删除确认弹窗时会先清空待删除请求,而原有异步删除任务随后才读取该请求,导致删除逻辑提前返回,文件没有被移动到废纸篓。

此外,原有流程会在删除前同步记录目标目录下所有文件的本地历史。删除较大目录时,这一步会产生明显等待。

修改内容

  • 通过 confirmationDialog 捕获本次删除请求,避免弹窗关闭后请求丢失。
  • 将捕获的删除请求显式传递到 Workspace 删除逻辑。
  • 确认后立即从文件树快照中移除目标节点。
  • 在后台执行 macOS “移到废纸篓”操作。
  • 删除成功后关闭相关编辑器并刷新工作区状态。
  • 删除失败时重新扫描文件树,恢复被乐观移除的节点并显示错误提示。
  • 删除前不再遍历目录生成 beforeDelete 历史快照,避免删除耗时随目录文件数量增长。
  • 已有的 Lithe Local History 记录不会被删除。

删除流程

  1. 用户在文件树中选择删除。
  2. 显示删除确认提示。
  3. 用户确认后,文件树立即移除目标节点。
  4. 后台将对应本地文件或目录移动到 macOS 废纸篓。
  5. 如果系统操作失败,重新刷新文件树并恢复节点。

测试

新增回归测试覆盖:

  • 确认弹窗关闭后,捕获的删除请求仍能正常执行。
  • 系统删除尚未完成时,文件树已经完成乐观更新。
  • 删除操作会调用真实的 Trash 文件操作接口。
  • 删除失败后文件树能够恢复目标节点。
  • 删除操作不会清空已有的本地历史记录。

验证结果:

  • ./scripts/test-macos.sh->448 项测试全部通过
  • ./scripts/verify-service-boundaries.sh->通过

@1lck
1lck merged commit d5073b7 into preview/0.3.0 Aug 17, 2026
5 checks passed
@xiaoyumuxi
xiaoyumuxi deleted the codex/fix-issue-86 branch August 26, 2026 14:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants