Skip to content

[Bug] 桌面版 ChatUI 无法通过拖拽添加文件附件 #167

Description

@Nartsam

What happened? / 实际发生了什么?

在 Windows 桌面版 AstrBot 的 ChatUI 中,无法通过从资源管理器拖拽文件的方式为当前会话添加附件。

将文件拖到消息输入框或附件区域时,界面没有显示附件,文件也没有进入待发送列表。使用附件按钮打开系统文件选择对话框后,选择同一个文件则可以正常添加。

然而,在通过浏览器访问同一个 AstrBot Web UI 时,拖拽文件添加附件可以正常工作,因此问题似乎只出现在 AstrBot Desktop 内嵌的 WebView2/Tauri 窗口中。

我实际复现时使用的桌面端版本为 v4.26.7,当前 main 分支的 tauri.conf.json 中似乎仍未配置 dragDropEnabled,我在本地源码中配置了该选项后重新构建,成功修复了这个问题。

Expected behavior / 预期行为

Windows 桌面版的 ChatUI 应当与浏览器 WebUI 保持一致,将文件从文件资源管理器中拖入 ChatUI 内时,可以正常上传为附件。

Steps to reproduce / 复现步骤

  1. 在 AstrBot Desktop 中打开 ChatUI,并进入任意一个可以发送消息的会话
  2. 从 Windows 资源管理器中选择一个普通文件
  3. 将文件拖到 ChatUI 的消息输入框或附件区域,松开鼠标,观察到文件没有被添加,界面没有正常进入附件上传流程
  4. 在浏览器中访问同一个 AstrBot Web UI,再次拖拽同一个文件,浏览器中的拖拽添加可以正常工作

Desktop version / 桌面端版本

v4.26.7

Installation channel / 安装来源

GitHub Release installer

OS / 操作系统

Windows

Architecture / 架构

amd64

Upstream AstrBot ref used by desktop build (optional) / 桌面构建使用的上游 AstrBot Ref(可选)

No response

Logs, screenshots, and additional context / 日志、截图与补充信息

目前未观察到桌面端或后端错误日志。该问题似乎发生在文件进入附件上传流程之前,因为桌面版没有收到正常的 HTML5 文件拖放事件。我的检查结果如下:

打包后的 ChatUI 已经实现了 dragoverdragleavedrop 处理,且文件拖拽入口读取 event.dataTransfer.files、文件选择框入口读取 event.target.files,两种方式获得文件后,都会进入同一个 fileSelect 附件处理流程。
因此,现有 ChatUI 和后端上传流程应该已经支持拖拽附件,问题应该出在桌面端 WebView 的事件转发层,当前 AstrBot Desktop 源码中没有发现对 Tauri 原生 DragDropEvent 的监听,而且当前 src-tauri/tauri.conf.json 的主窗口配置没有显式设置 dragDropEnabled

Tauri v2 官方文档说明,dragDropEnabled 默认启用 Tauri 自己的文件拖放处理器,在 Windows 上,如果希望 WebView 使用标准 HTML5 drag-and-drop,需要将其设置为 false。因此,可以解决此问题的最小修复是对文件:

https://github.com/AstrBotDevs/AstrBot-desktop/blob/main/src-tauri/tauri.conf.json

应用如下更改:

         "fullscreen": false,
-        "backgroundThrottling": "disabled"
+        "backgroundThrottling": "disabled",
+        "dragDropEnabled": false

### Willing to submit a PR? / 是否愿意提交 PR?

- [ ] I am willing to submit a PR to fix this issue. / 我愿意提交 PR 修复此问题。

### Code of Conduct

- [x] I agree to follow the project's Code of Conduct. / 我同意遵守项目行为准则。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions