Skip to content

fix(console): 修复移动端批量导入无法选文件 - #397

Merged
caigee-cmd merged 1 commit into
mainfrom
fix/accounts-batch-import-mobile
Oct 25, 2026
Merged

caigee-cmd merged 1 commit into
mainfrom
fix/accounts-batch-import-mobile

Conversation

@caigee-cmd

Copy link
Copy Markdown
Owner

根因

账号页「批量导入」用 HeroUI Button.onPress → hidden(display: none)file input 的 click()。iOS Safari / 部分 WebView 会忽略对 display:none file input 的 programmatic click,且 React Aria 的 press 路径也容易打断 user-gesture,所以移动端点了没反应。

检测 / 确认 Modal / WorkBuddy 导入链路本身没问题,是触发选文件的 UI 模式坏了。

修复

  • AccountsPage:改为 label htmlFor + sr-only file input(非 display:none),点击即直接手势打开系统文件选择器;视觉仍用 HeroUI .button--sm.button--secondary;loading 时用已有 BrandMark loading
  • 顶栏操作区小屏 w-full flex-wrap justify-end,避免按钮被挤出可视区
  • BatchImportConfirmModal:小屏边距 / 全宽按钮 / scroll="inside" / 长文件名 break-all
  • 同步 internal/webui/static(避免 static CI dirty)
  • 复用原路径:detectImportBundle → BatchImportConfirmModal → importWorkbuddyBundle,无平行流程

不做

不 merge、不发版、不部署 SGP3。

建议真机验收

  1. iOS Safari:账号页点「批量导入」→ 应弹出文件选择(Files)
  2. 选 WorkBuddy JSON → 出现确认 Modal → 选区 → 导入成功
  3. 导入中 / Modal 打开时,选文件控件应不可点
  4. Android Chrome 同样走一遍

残留风险

  • 未在本环境做真机点选验证(仅代码层按 Safari 约束修复)
  • iOS 上 JSON 需从「文件」选,相册里不会出现(预期行为)
  • accept 仍偏 JSON;极端 MIME 标记异常的文件可能被系统过滤(可再放宽)
  • 「添加账号」向导里选文件仍是旧的 hidden+click 模式,本次未改

iOS Safari 会忽略对 display:none 的 file input 的 programmatic click(HeroUI onPress)。
改为 label + sr-only input,确认弹层适配小屏,并同步 embedded static。
@caigee-cmd
caigee-cmd merged commit b0d9db7 into main Oct 25, 2026
6 checks passed
@caigee-cmd
caigee-cmd deleted the fix/accounts-batch-import-mobile branch October 25, 2026 15:20
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.

1 participant