fix: 修复实例分组无法保存的问题
direct-link(外部 .minecraft 关联)同步逻辑会把来源路径当作分组名 写入 instance_groups 表,每次同步都覆盖用户手动设置的分组,导致 分组当场生效、重启丢失。 移除三处 direct-link 相关的来源分组写入,使 instance_groups 表 专属于用户分组: - sync_direct_link_instances: 同步时不再覆盖 groups - create_direct_link_instance: 建实例时不再写来源分组 - launcher::promote_external_instance_link: 提升外部实例时不再写分组
This commit is contained in:
1 parent
748d24b264
commit
20d5d2baab
3 files changed
+3
-27
No files matched your search
@@ -1,5 +1,4 @@
|
|||||||
//! Logic for launching Minecraft
|
//! Logic for launching Minecraft
|
||||||
use crate::api::pack::import::direct_link::direct_link_group;
|
|
||||||
use crate::data::ModLoader;
|
use crate::data::ModLoader;
|
||||||
use crate::event::emit::{emit_instance, emit_loading, init_loading};
|
use crate::event::emit::{emit_instance, emit_loading, init_loading};
|
||||||
use crate::event::{InstancePayloadType, LoadingBarType};
|
use crate::event::{InstancePayloadType, LoadingBarType};
|
||||||
@@ -717,14 +716,6 @@ async fn promote_external_instance_link(
|
|||||||
&mut tx,
|
&mut tx,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
if let Some(group) = direct_link_group(&direct.dot_minecraft) {
|
|
||||||
crate::state::instances::adapters::sqlite::instance_rows::replace_instance_groups(
|
|
||||||
&instance.id,
|
|
||||||
&[group],
|
|
||||||
&mut tx,
|
|
||||||
)
|
|
||||||
.await?;
|
|
||||||
}
|
|
||||||
tx.commit().await?;
|
tx.commit().await?;
|
||||||
emit_instance(&instance.id, InstancePayloadType::Edited).await?;
|
emit_instance(&instance.id, InstancePayloadType::Edited).await?;
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use crate::api::pack::import::{
|
use crate::api::pack::import::{
|
||||||
ImportLauncherType,
|
ImportLauncherType,
|
||||||
direct_link::{direct_link_group, resolve_direct_link},
|
direct_link::resolve_direct_link,
|
||||||
};
|
};
|
||||||
use crate::launcher::ExternalGameDirMode;
|
use crate::launcher::ExternalGameDirMode;
|
||||||
use crate::state::instances::{
|
use crate::state::instances::{
|
||||||
@@ -156,11 +156,6 @@ pub(crate) async fn create_direct_link_instance(
|
|||||||
&mut tx,
|
&mut tx,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
let groups = direct_link_group(&resolved.dot_minecraft)
|
|
||||||
.into_iter()
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
instance_rows::replace_instance_groups(&instance_id, &groups, &mut tx)
|
|
||||||
.await?;
|
|
||||||
instance_rows::upsert_instance_launch_overrides(&launch_overrides, &mut tx)
|
instance_rows::upsert_instance_launch_overrides(&launch_overrides, &mut tx)
|
||||||
.await?;
|
.await?;
|
||||||
tx.commit().await?;
|
tx.commit().await?;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use super::create_direct_link_instance::create_direct_link_instance;
|
use super::create_direct_link_instance::create_direct_link_instance;
|
||||||
use crate::api::pack::import::direct_link::{
|
use crate::api::pack::import::direct_link::{
|
||||||
detect_direct_link_source, direct_link_group,
|
detect_direct_link_source,
|
||||||
has_minecraft_version_manifest, resolve_direct_link,
|
has_minecraft_version_manifest, resolve_direct_link,
|
||||||
};
|
};
|
||||||
use crate::event::{InstancePayloadType, emit::emit_instance};
|
use crate::event::{InstancePayloadType, emit::emit_instance};
|
||||||
@@ -163,11 +163,7 @@ pub(crate) async fn sync_direct_link_instances(
|
|||||||
let content_changed = metadata.applied_content_set.game_version
|
let content_changed = metadata.applied_content_set.game_version
|
||||||
!= resolved.game_version
|
!= resolved.game_version
|
||||||
|| metadata.applied_content_set.loader != resolved.loader;
|
|| metadata.applied_content_set.loader != resolved.loader;
|
||||||
let groups = direct_link_group(&resolved.dot_minecraft)
|
if fields_changed || content_changed {
|
||||||
.into_iter()
|
|
||||||
.collect::<Vec<_>>();
|
|
||||||
let groups_changed = metadata.groups != groups;
|
|
||||||
if fields_changed || content_changed || groups_changed {
|
|
||||||
if content_changed {
|
if content_changed {
|
||||||
crate::state::edit_instance(
|
crate::state::edit_instance(
|
||||||
&instance.id,
|
&instance.id,
|
||||||
@@ -216,12 +212,6 @@ pub(crate) async fn sync_direct_link_instances(
|
|||||||
&mut tx,
|
&mut tx,
|
||||||
)
|
)
|
||||||
.await?;
|
.await?;
|
||||||
instance_rows::replace_instance_groups(
|
|
||||||
&instance.id,
|
|
||||||
&groups,
|
|
||||||
&mut tx,
|
|
||||||
)
|
|
||||||
.await?;
|
|
||||||
tx.commit().await?;
|
tx.commit().await?;
|
||||||
let _ = emit_instance(
|
let _ = emit_instance(
|
||||||
&instance.id,
|
&instance.id,
|
||||||
|
|||||||
Reference in new issue
Block a user