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
@@ -154,9 +154,31 @@ impl CoreHost {
|
||||
job.cancel();
|
||||
}
|
||||
self.login = None;
|
||||
// 第三方轨的面板也归这条「关掉登录面板」:两条轨都不该留一个转不完的圈
|
||||
if let Some(job) = &self.authlib {
|
||||
job.cancel();
|
||||
}
|
||||
self.authlib = None;
|
||||
self.send(CoreEvent::DeviceLoginChanged(
|
||||
crate::dto::DeviceLoginView::new(),
|
||||
));
|
||||
self.send(CoreEvent::AuthlibLoginChanged(
|
||||
crate::dto::AuthlibLoginView::new(),
|
||||
));
|
||||
}
|
||||
AppCommand::AddAuthlibAccount(request) => {
|
||||
self.authlib = Some(LoginJob::new());
|
||||
let job = self.authlib.clone().unwrap_or_default();
|
||||
self.send(CoreEvent::AuthlibLoginChanged(
|
||||
crate::dto::AuthlibLoginView::running(&request.server, "正在校验服务器地址…"),
|
||||
));
|
||||
accounts::start_authlib_login(self.env.clone(), self.tx.clone(), job, request);
|
||||
}
|
||||
AppCommand::ProbeAuthlibServer(server) => {
|
||||
// 只探活:后台线程跑服务发现,结果回到同一条 `AuthlibLoginChanged`
|
||||
let env = self.env.clone();
|
||||
let tx = self.tx.clone();
|
||||
accounts::spawn_probe(env, tx, server);
|
||||
}
|
||||
AppCommand::InstallJava(vendor) => {
|
||||
self.java_busy = true;
|
||||
|
||||
Reference in new issue
Block a user