kuaifan
84f225f3f3
feat(mobile): 兼容新 Expo 壳(dootask_expo UA)
配合 dootask-app 仓库的 Expo 迁移(见 docs/migration-eeui-to-expo.md 的 Phase 5),
让服务端和前端同时识别旧 EEUI 壳与新 Expo 壳的 User-Agent,并让 eeui.js 的同步返回
方法在 Expo 壳下优先读取 injectedJS 启动时写入的 __EXPO_INIT_DATA__ / __EXPO_VARIATES__
缓存,避免原本同步 API 变成 Promise 后破坏调用方。
后端:
- Base::isEEUIApp():同时匹配 kuaifan_eeui / dootask_expo
- UserDevice:android_(kuaifan_eeui|dootask_expo) 正则捕获标识段,版本号按实际段名取
- IndexController PDF 预览:浏览器分类兼容 android_dootask_expo / ios_dootask_expo
- SystemController::prefetch:$isApp 同时接受两种 UA
- resources/views/download.blade.php:/eeui|dootask_expo/i
前端:
- app.js:
- isEEUIApp 正则新增 dootask_expo
- $preload 等待条件改为 requireModuleJs 可用 OR window.__EXPO_BRIDGE_READY__,
避免 Expo 壳下等 15 秒超时
- eeui.js:以下几个同步 getter 在 Expo 壳下先读 window.__EXPO_* 再回落到原生:
- eeuiAppVersion / eeuiAppLocalVersion → __EXPO_INIT_DATA__.version
- eeuiAppGetPageInfo → __EXPO_INIT_DATA__.pageInfo
- eeuiAppGetThemeName → __EXPO_INIT_DATA__.themeName
- eeuiAppKeyboardStatus → __EXPO_INIT_DATA__.keyboardVisible
- eeuiAppGetVariate → __EXPO_VARIATES__[key]
- eeuiAppGetCachesString → __EXPO_CACHES__[key](RN 侧后续要同步 broadcast)
旧 EEUI 壳不受影响:只读缓存不存在时自动回落到原有 $A.eeuiModule() 调用,
行为与改动前一致。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 09:44:53 +00:00
..
2025-04-24 08:57:43 +08:00
2026-04-17 04:22:35 +00:00
2025-02-22 11:29:46 +08:00
2024-04-04 08:42:41 +08:00
2023-04-28 10:14:10 +08:00
2024-04-24 19:22:36 +08:00
2024-04-04 08:42:41 +08:00
2026-01-14 20:15:48 +08:00
2025-11-11 05:23:00 +00:00
2024-04-04 08:42:41 +08:00
2026-01-13 11:55:45 +00:00
2026-01-15 08:28:55 +00:00
2024-10-23 16:14:42 +08:00
2024-04-04 10:31:12 +08:00
2026-01-14 20:15:48 +08:00
2024-04-04 08:42:41 +08:00
2024-04-04 08:42:41 +08:00
2025-08-19 20:06:38 +08:00
2024-04-04 08:42:41 +08:00
2024-05-31 18:14:51 +08:00
2025-07-07 20:34:24 +08:00
2025-09-28 06:33:38 +08:00
2026-01-22 07:34:09 +00:00
2026-01-21 15:30:06 +00:00
2024-12-02 10:40:55 +08:00
2024-04-04 08:42:41 +08:00
2024-04-04 08:42:41 +08:00
2024-04-04 08:42:41 +08:00
2026-03-09 06:38:13 +00:00
2025-08-19 20:06:38 +08:00
2025-02-22 11:29:46 +08:00
2025-07-08 10:41:41 +08:00
2024-04-04 08:42:41 +08:00
2025-08-19 20:06:38 +08:00
2026-01-14 20:15:48 +08:00
2026-01-14 20:15:48 +08:00
2025-03-15 17:06:47 +08:00
2024-10-23 16:14:42 +08:00
2026-04-05 09:31:41 +00:00
2024-10-23 16:14:42 +08:00
2024-04-04 08:42:41 +08:00
2025-11-01 16:15:32 +00:00
2025-11-01 16:15:32 +00:00
2026-01-14 20:15:48 +08:00
2026-01-14 20:15:48 +08:00
2026-01-14 20:15:48 +08:00
2025-05-26 23:04:00 +08:00
2024-04-04 08:42:41 +08:00
2026-01-06 12:31:41 +00:00
2025-08-01 12:51:36 +08:00
2025-09-22 05:07:45 +08:00
2026-04-17 09:44:53 +00:00
2024-11-19 11:22:00 +08:00
2025-09-28 06:33:38 +08:00
2025-09-28 06:33:38 +08:00
2026-01-14 20:15:48 +08:00
2026-01-14 20:15:48 +08:00
2025-09-28 06:33:38 +08:00
2024-11-23 09:03:35 +08:00
2025-12-05 02:10:37 +00:00
2025-11-06 13:59:10 +00:00
2025-02-22 11:29:46 +08:00
2026-04-05 09:31:41 +00:00
2025-11-07 07:54:04 +00:00
2024-10-23 16:14:42 +08:00
2024-10-28 21:18:24 +08:00
2025-07-25 11:38:51 +08:00
2025-02-22 11:29:46 +08:00
2024-04-04 08:42:41 +08:00