feat(app-iced): M114 账户页三轨登录(微软正版 / 第三方皮肤站 / 本地档案)
- 账户页:当前账户卡 + 全部账户列表 + 空态三入口 + 皮肤区;五项动作(添加/切换/删除/重新登录/校验) - 三轨添加流程:设备码(用户码+链接+倒计时+过期重试+取消)、授权码(浏览器+可复制链接+取消)、 本地档案(名字校验)、第三方站(服务地址 + 服务发现校验 + 密码登录,密码掩码且用完即弃) - 导航:账户为一等页,入口是轨底头像位(未登录=描边剪影 / 已登录=首字母块+名字;窄高收成图标条) - 凭据红线:DTO 侧形状脱敏 + 状态层二次脱敏 + 密码掩码;Inject-JWT 测试断言视图模型干净(已做变异取证) - presenter:authlib 登录/服务发现/皮肤抓取(复用下载引擎的 HTTP 客户端,无新增依赖)、 皮肤原图经 DTO 到 UI 裁剪成头像(既有 image 依赖,未改 Cargo.toml) - i18n:新增 account 域 51 条中英文案(离线档案口径全量写入),金表同步
This commit is contained in:
1 parent
e7b04c4afe
commit
1ff00bbe50
43 files changed
+4343
-117
No files matched your search
@@ -19,6 +19,7 @@ use super::state::{log_first_frame, App};
|
||||
use super::APP_TITLE;
|
||||
|
||||
mod logs;
|
||||
mod rail;
|
||||
|
||||
use logs::logs_model;
|
||||
|
||||
@@ -55,10 +56,12 @@ impl App {
|
||||
// 右栗(M104):拆出档返回 `None`(会话已在独立页里);拖拽期间另有铺满窗口的取指针层。
|
||||
let overlay = agent::drag_overlay(&self.agent).map(|element| element.map(Message::Agent));
|
||||
|
||||
let account = self.rail_account();
|
||||
match pages::Screen::of(self.state.route()) {
|
||||
Some(_) => shell::view_with_background(
|
||||
&self.ui,
|
||||
nav_item_of(self.state.route()),
|
||||
&account,
|
||||
APP_TITLE,
|
||||
background,
|
||||
// M101 r2:设置页的只读状态(外观运行期状态 + 各组自己的状态)一次递进去。
|
||||
@@ -79,10 +82,37 @@ impl App {
|
||||
self.options.force_state,
|
||||
self.lang(),
|
||||
),
|
||||
// `Route::Agent`:独立页与右栗共用同一个 `conversation::view`(`agent::page` 内部调的它)。
|
||||
// 账户页(M114):它不走 `pages::Screen` 那四页的 `Model`,自己一棵树
|
||||
// (模型在 `App::account`,由 `refresh_view` 按同一条门控重建;宽度用 M104 的
|
||||
// 中栏可用宽,与其它页同源)。
|
||||
None if self.state.route() == &Route::Accounts => shell::view_with_background(
|
||||
&self.ui,
|
||||
NavItem::Account,
|
||||
&account,
|
||||
APP_TITLE,
|
||||
background,
|
||||
pages::account::view(
|
||||
&self.ui,
|
||||
pages::layout::frame_metrics(
|
||||
pages::layout::PaneKit::Single,
|
||||
self.account.width,
|
||||
),
|
||||
&self.account,
|
||||
self.lang(),
|
||||
)
|
||||
.map(Message::Page),
|
||||
agent::docked(&self.ui, &self.agent, self.width)
|
||||
.map(|element| element.map(Message::Agent)),
|
||||
overlay,
|
||||
self.options.force_state,
|
||||
// M106:导航轨标签按当前界面语言取词。
|
||||
self.lang(),
|
||||
),
|
||||
// `Route::Agent`:独立页与右栏共用同一个 `conversation::view`(`agent::page` 内部调的它)。
|
||||
None => shell::view_with_background(
|
||||
&self.ui,
|
||||
NavItem::Ai,
|
||||
&account,
|
||||
APP_TITLE,
|
||||
background,
|
||||
agent::page(&self.ui, &self.agent, self.width).map(Message::Agent),
|
||||
|
||||
Reference in new issue
Block a user