feat(presenter): adopt 的指令/事件/任务接线 + install 那句假话变真话(M223)
- AppCommand::Adopt(Box<AdoptCommand>)、CoreEvent::Adopt(Box<AdoptEvent>)、
HostTask::Adopt { event, epoch }:三条穷尽枚举各加一条变体(代次独立于安装与 pack);
- dispatch.rs 一条分支、handle.rs 一条分支、state.rs 的 adopt 字段与一条 apply 分支;
- host/install.rs 的「还没有接入安装管线…请先在实例页导入已有版本」改成指向真入口:
那里以前是一句假话(实例页根本没有导入动作),现在向导落地了,它才成立。
This commit is contained in:
1 parent
26e4fbb91d
commit
5a59cb33b2
6 files changed
+30
-1
No files matched your search
@@ -253,6 +253,8 @@ impl CoreHost {
|
||||
// (`CancelInstall` 会把标记置位,下载在阶段边界收尾)。
|
||||
// M113: import/export —— 导入 / 预检 / 确认写盘 / 关面板
|
||||
AppCommand::Pack(command) => self.pack(*command),
|
||||
// M223: 导入已有版本 —— 扫描 / 预检 / 确认登记 / 关面板
|
||||
AppCommand::Adopt(command) => self.adopt(*command),
|
||||
AppCommand::InstallContent(request) => {
|
||||
let cancel = std::sync::Arc::new(std::sync::atomic::AtomicBool::new(false));
|
||||
self.install_cancel = Some(std::sync::Arc::clone(&cancel));
|
||||
|
||||
@@ -69,6 +69,7 @@ impl CoreHost {
|
||||
// M105 的形状(代次丢包)为准:旧任务(已取消 / 被下一轮顶掉)的进度一律丢掉。
|
||||
// 这是「点了取消没反应」的根因:取消时 `InstallProgress(None)` 刚把面板收回,
|
||||
// 旧任务的下一条「下载中」事件立刻又把它点亮。
|
||||
HostTask::Adopt { event, epoch } => self.handle_adopt(*event, epoch),
|
||||
HostTask::Install { progress, epoch } => {
|
||||
if epoch != self.install_epoch {
|
||||
return;
|
||||
|
||||
@@ -106,7 +106,7 @@ pub fn supported(kind: LoaderKind) -> bool {
|
||||
/// 不支持的加载器 → 给用户的可执行建议。
|
||||
pub fn unsupported_reason(kind: LoaderKind) -> String {
|
||||
format!(
|
||||
"{} 还没有接入安装管线(目前支持原版 + Fabric/Quilt/Forge/NeoForge/LiteLoader);请先在实例页导入已有版本,或换成受支持的加载器。",
|
||||
"{} 还没有接入安装管线(目前支持原版 + Fabric/Quilt/Forge/NeoForge/LiteLoader);如果别的启动器已经装好了这个版本,可以在实例页用「导入已有版本」把它只读接进来(不复制文件),否则请换成受支持的加载器。",
|
||||
kind.label()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -68,6 +68,17 @@ pub enum HostTask {
|
||||
/// 任务代次
|
||||
epoch: u64,
|
||||
},
|
||||
// M223: 导入已有版本
|
||||
/// 扫描 / 预检 / 确认的结果(一条事件 + 任务代次)
|
||||
///
|
||||
/// 代次是 adopt 自己的(`CoreHost::adopt_epoch`),**不**与安装或 pack 的代次共用:
|
||||
/// 关一次导入面板不该把下载页在跑的安装静默丢掉。
|
||||
Adopt {
|
||||
/// 事件载荷(扫描 / 预检 / 完成 / 失败)
|
||||
event: Box<crate::dto::AdoptEvent>,
|
||||
/// 任务代次
|
||||
epoch: u64,
|
||||
},
|
||||
/// 安装进度(高频,host 只做聚合与转发)
|
||||
Install {
|
||||
/// 进度快照
|
||||
|
||||
Reference in new issue
Block a user