2.1 KiB
2.1 KiB
主页 UI 显示逻辑
依赖接口:GET /v1/user/common_info 返回的 data.surge(JSON 字符串)解析为 extConfig,结构见 extConfig.md。
extConfig 与顶部分类栏
- need_wait(是否展示 Video 菜单)
- 解析自
surge.need_wait,写入UserState.needShowVideoMenu。 - 仅 need_wait === true:展示顶部分类栏(对应 Pencil 设计中的 tabRow,节点 bK6o6),行为见下。
- 其他情况(need_wait === false、未下发或未解析):不展示顶部分类栏,列表只展示 extConfig.items 的图片列表。
- 解析自
need_wait === true 时的分类与列表
- 分类栏
使用图转视频分类接口数据,在分类列表末尾增加一个固定分类「pets」。 - 列表内容
- 选中固定分类 pets:列表展示 extConfig.items 的图片列表(不请求视频任务接口)。
- 选中其他分类:按原逻辑请求对应分类的视频任务接口,列表展示接口返回的视频任务。
数据流简述
- 应用启动与登录、归因、common_info 的完整顺序见 app_startup.md。
- 登录成功后:两次
POST /v1/user/referrer(android_adjust、gg)均返回后,再GET /v1/user/common_info一次;在AuthService._saveCommonInfoToState中解析data.surge:- 写入
lucky等; - 解析
need_wait、items,通过UserState.setExtConfig(needShowVideoMenuValue: needWait, items: items)写入。 - 若
need_wait或items相对之前发生结构性变化,会触发UserState.requestHomeFullReload(),首页重走「加载分类 → 加载任务」。
- 写入
- 主页
HomeScreen监听UserState.needShowVideoMenu、UserState.extConfigItems、homeReloadNonce等,据此决定:- 是否渲染顶部分类栏;
- 当前列表是来自 extConfig.items 还是来自视频任务接口。
- extConfig 的 items 单项字段:
image、cost、title、detail,用于展示卡片并作为生图参数(taskType / ext)。