接入个人头像原生图片导入

个人头像上传在原生壳声明 file.importImage 时调用 HostBridge 图片导入

头像导入结果转换为 File 后复用现有类型校验、5 MiB 限制、方形裁剪和资料更新链路

补充头像原生导入回归测试,确认不会触发隐藏文件输入

更新 Expo/Tauri 宿主壳方案、HostBridge 协议和共享决策记录
This commit is contained in:
2026-06-18 06:39:19 +08:00
parent 01349e7882
commit a0497cb39d
5 changed files with 96 additions and 23 deletions

View File

@@ -2319,3 +2319,10 @@
- 决策:`PlatformFeedbackView``native_app` 且宿主声明 `file.importImage` 时优先调用 `importHostImageFile()`,把宿主返回的图片内容副本转换成浏览器 `File` 后继续走现有凭证预览和提交逻辑。反馈页仍保留最多 4 张、单张 1MB、总 4MB、图片 MIME 和 data URL payload 校验;宿主不暴露设备 URI、本机绝对路径或通用文件系统。普通浏览器、小程序和未声明该能力的裁剪壳继续使用原 `<input type="file">`
- 影响范围:`src/components/platform-entry/PlatformFeedbackView.tsx``src/services/host-bridge/hostBridge.ts`、Expo / Tauri HostBridge 文档。
- 验证方式:`npm run check:native-shells``npm run test -- src/components/platform-entry/PlatformFeedbackView.test.tsx`、针对变更文件执行 ESLint、`npm run typecheck``npm run check:encoding``git diff --check`
## 2026-06-18 个人头像上传接入原生壳图片导入
- 背景:个人资料头像上传在 Expo / Tauri 壳内仍只触发浏览器隐藏文件输入,移动端相册选择和桌面系统选择框能力没有被头像流程复用。
- 决策:`RpgEntryHomeView` 的头像上传在 `native_app` 且宿主声明 `file.importImage` 时优先调用 `importHostImageFile()`,把宿主返回的图片内容副本转换成浏览器 `File` 后继续走现有头像读取、类型校验、5 MiB 大小限制、方形裁剪和 `updateAuthProfile({ avatarDataUrl })` 链路。宿主只负责受控图片选择,不暴露设备 URI、本机绝对路径或通用文件系统也不新增 React Native / Tauri 专属头像编辑页;普通浏览器、小程序和未声明能力的裁剪壳继续使用原 `<input type="file">`
- 影响范围:`src/components/rpg-entry/RpgEntryHomeView.tsx``src/services/host-bridge/hostBridge.ts`、Expo / Tauri HostBridge 文档。
- 验证方式:`npm run check:native-shells``npm run test -- src/components/rpg-entry/RpgEntryHomeView.recharge.test.tsx -t "profile avatar upload"`、针对变更文件执行 ESLint、`npm run typecheck``npm run check:encoding``git diff --check`