fix: disable unsupported mods

Also hotfix amdaemon crashing
This commit is contained in:
2025-04-15 07:32:18 +00:00
parent f588892b05
commit ac18c34895
3 changed files with 30 additions and 11 deletions

View File

@ -88,9 +88,10 @@ pub enum StartCheckError {
} }
#[derive(Default, Serialize, Deserialize, Clone)] #[derive(Default, Serialize, Deserialize, Clone)]
#[serde(default)]
pub struct ConfigHook { pub struct ConfigHook {
#[serde(skip_serializing_if = "Option::is_none")]
pub allnet_auth: Option<ConfigHookAuth>, pub allnet_auth: Option<ConfigHookAuth>,
#[serde(skip_serializing_if = "Option::is_none")]
pub aime: Option<ConfigHookAime>, pub aime: Option<ConfigHookAime>,
} }

View File

@ -128,7 +128,7 @@ impl Package {
.unwrap() .unwrap()
.to_owned(); .to_owned();
let status = Self::parse_status(&mft); let status = Self::parse_status(&mft, &dir);
let dependencies = Self::sanitize_deps(mft.dependencies); let dependencies = Self::sanitize_deps(mft.dependencies);
Ok(Package { Ok(Package {
@ -221,9 +221,15 @@ impl Package {
res res
} }
fn parse_status(mft: &PackageManifest) -> Status { fn parse_status(mft: &PackageManifest, dir: impl AsRef<Path>) -> Status {
if mft.installers.len() == 0 { 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 { } else {
let mut flags = BitFlags::default(); let mut flags = BitFlags::default();
let mut game_dll = None; let mut game_dll = None;

View File

@ -26,19 +26,31 @@ const model = computed({
await prf.togglePkg(props.pkg, value); 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);
}
</script> </script>
<template> <template>
<div class="flex items-center"> <div class="flex items-center">
<ModTitlecard show-version show-icon show-description :pkg="pkg" /> <ModTitlecard show-version show-icon show-description :pkg="pkg" />
<UpdateButton :pkg="pkg" /> <UpdateButton :pkg="pkg" />
<ToggleSwitch <span
v-if="hasFeature(pkg, Feature.Mod)" v-tooltip="
class="scale-[1.33] shrink-0" unsupported && 'This package is not compatible with STARTLINER.'
inputId="switch" "
:disabled="pkg!.loc!.status === 'Unsupported'" >
v-model="model" <ToggleSwitch
/> v-if="hasFeature(pkg, Feature.Mod) || unsupported === true"
class="scale-[1.33] shrink-0"
inputId="switch"
:disabled="unsupported === true"
v-model="model"
/>
</span>
<InstallButton :pkg="pkg" /> <InstallButton :pkg="pkg" />
<Button <Button
rounded rounded