1.7 KiB
1.7 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,在AuthService._saveCommonInfoToState中解析data.surge:- 写入
enable_third_party_payment等; - 解析
need_wait、items,通过UserState.setExtConfig(needShowVideoMenuValue: needWait, items: items)写入。
- 写入
- 主页
HomeScreen监听UserState.needShowVideoMenu、UserState.extConfigItems,据此决定:- 是否渲染顶部分类栏;
- 当前列表是来自 extConfig.items 还是来自视频任务接口。
- extConfig 的 items 单项字段:
image、cost、title、detail,用于展示卡片并作为生图参数(taskType / ext)。