From ac18c348954656959f936bc6f6417cb4b7e20366 Mon Sep 17 00:00:00 2001 From: akanyan Date: Tue, 15 Apr 2025 07:32:18 +0000 Subject: [PATCH] fix: disable unsupported mods Also hotfix amdaemon crashing --- rust/src/model/misc.rs | 3 ++- rust/src/pkg.rs | 12 +++++++++--- src/components/ModListEntry.vue | 26 +++++++++++++++++++------- 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/rust/src/model/misc.rs b/rust/src/model/misc.rs index 92f619c..0f727c1 100644 --- a/rust/src/model/misc.rs +++ b/rust/src/model/misc.rs @@ -88,9 +88,10 @@ pub enum StartCheckError { } #[derive(Default, Serialize, Deserialize, Clone)] -#[serde(default)] pub struct ConfigHook { + #[serde(skip_serializing_if = "Option::is_none")] pub allnet_auth: Option, + #[serde(skip_serializing_if = "Option::is_none")] pub aime: Option, } diff --git a/rust/src/pkg.rs b/rust/src/pkg.rs index 2c4d9ea..1accaae 100644 --- a/rust/src/pkg.rs +++ b/rust/src/pkg.rs @@ -128,7 +128,7 @@ impl Package { .unwrap() .to_owned(); - let status = Self::parse_status(&mft); + let status = Self::parse_status(&mft, &dir); let dependencies = Self::sanitize_deps(mft.dependencies); Ok(Package { @@ -221,9 +221,15 @@ impl Package { res } - fn parse_status(mft: &PackageManifest) -> Status { + fn parse_status(mft: &PackageManifest, dir: impl AsRef) -> Status { if mft.installers.len() == 0 { - return Status::OK(make_bitflags!(Feature::Mod), DLLs { game: None, amd: None }); //Unchecked + if dir.as_ref().join("post_load.ps1").exists() { + return Status::Unsupported; + } + if dir.as_ref().join("app").join("data").exists() { + return Status::Unsupported; + } + return Status::OK(make_bitflags!(Feature::Mod), DLLs { game: None, amd: None }); } else { let mut flags = BitFlags::default(); let mut game_dll = None; diff --git a/src/components/ModListEntry.vue b/src/components/ModListEntry.vue index 285a9bb..e88aff1 100644 --- a/src/components/ModListEntry.vue +++ b/src/components/ModListEntry.vue @@ -26,19 +26,31 @@ const model = computed({ await prf.togglePkg(props.pkg, value); }, }); + +const unsupported = computed(() => props.pkg!.loc!.status === 'Unsupported'); + +if (unsupported.value === true && model.value === true) { + prf.togglePkg(props.pkg, false); +}