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
@@ -16,6 +16,9 @@ use crate::dto::{
|
||||
use crate::mock_data::{mock_instances, mock_log_lines, mock_log_sessions, mock_versions};
|
||||
use crate::toast::{Toast, ToastKind};
|
||||
|
||||
#[path = "mock/accounts.rs"]
|
||||
mod accounts_screen;
|
||||
|
||||
/// 启动脚本:按时间推进 download → verify → launch → running。
|
||||
#[derive(Debug)]
|
||||
struct LaunchScript {
|
||||
@@ -65,6 +68,18 @@ impl MockBackend {
|
||||
)));
|
||||
self.events
|
||||
.push_back(AppEvent::Core(CoreEvent::LogLinesChanged(mock_log_lines())));
|
||||
self.seed_accounts();
|
||||
}
|
||||
|
||||
/// 账户页的截图矩阵(`ULL_ACCOUNT_STATE`,见 [`accounts_screen`])。
|
||||
fn seed_accounts(&mut self) {
|
||||
let scenario = accounts_screen::scenario();
|
||||
self.emit(AppEvent::Core(CoreEvent::AccountsChanged(
|
||||
accounts_screen::accounts(&scenario),
|
||||
)));
|
||||
if let Some(view) = accounts_screen::device_login(&scenario) {
|
||||
self.emit(AppEvent::Core(CoreEvent::DeviceLoginChanged(view)));
|
||||
}
|
||||
}
|
||||
|
||||
fn emit(&mut self, event: AppEvent) {
|
||||
@@ -260,7 +275,8 @@ impl Backend for MockBackend {
|
||||
crate::mock_data::mock_diagnosis(id),
|
||||
)));
|
||||
}
|
||||
AppCommand::RefreshAll | AppCommand::RefreshLogSessions | AppCommand::StopAgent => {}
|
||||
AppCommand::RefreshAll => self.seed_accounts(),
|
||||
AppCommand::RefreshLogSessions | AppCommand::StopAgent => {}
|
||||
// 其余指令(安装向导/账户/Java/设置/通知)由真实 host 承接:mock 不模拟
|
||||
_ => {}
|
||||
}
|
||||
@@ -281,7 +297,12 @@ mod tests {
|
||||
fn seeds_instances_and_versions() {
|
||||
let mut backend = MockBackend::new();
|
||||
let events = backend.drain_events();
|
||||
assert_eq!(events.len(), 4);
|
||||
// 实例 / 版本 / 会话 / 日志行 **+ 账户页的种子**(M114:账户列表 + 可选的登录面板态)
|
||||
assert!(
|
||||
events.len() >= 5,
|
||||
"至少含账户列表,实际 {} 条",
|
||||
events.len()
|
||||
);
|
||||
assert!(events
|
||||
.iter()
|
||||
.all(|event| matches!(event, AppEvent::Core(_))));
|
||||
|
||||
Reference in new issue
Block a user