diff --git a/rust/src/pkg.rs b/rust/src/pkg.rs index a0f923d..69235ae 100644 --- a/rust/src/pkg.rs +++ b/rust/src/pkg.rs @@ -3,7 +3,7 @@ use derive_more::Display; use serde::{Deserialize, Serialize}; use std::{collections::BTreeSet, path::{Path, PathBuf}}; use tokio::fs; -use enumflags2::{bitflags, BitFlags}; +use enumflags2::{bitflags, make_bitflags, BitFlags}; use crate::{model::{local::{self, PackageManifest}, rainy}, util}; // {namespace}-{name} @@ -36,6 +36,7 @@ pub enum Status { #[repr(u8)] #[derive(Copy, Clone, Debug, PartialEq, Serialize, Deserialize)] pub enum Feature { + Mod, Hook, GameIO, Aime, @@ -185,11 +186,11 @@ impl Package { fn parse_status(mft: &PackageManifest) -> Status { if mft.installers.len() == 0 { - return Status::OK(BitFlags::default());//Unchecked + return Status::OK(make_bitflags!(Feature::Mod));//Unchecked } else if mft.installers.len() == 1 { if let Some(serde_json::Value::String(id)) = &mft.installers[0].get("identifier") { if id == "rainycolor" { - return Status::OK(BitFlags::default()); + return Status::OK(make_bitflags!(Feature::Mod)); } else if id == "segatools" { // Multiple features in the same dll (yubideck etc.) should be supported at some point let mut flags = BitFlags::default(); diff --git a/src/components/ModList.vue b/src/components/ModList.vue index 490628e..da33155 100644 --- a/src/components/ModList.vue +++ b/src/components/ModList.vue @@ -40,7 +40,7 @@ const group = () => { }; const missing = computed(() => { - return prf.current?.mods.filter((m) => !pkgs.hasLocal(m)); + return prf.current?.mods.filter((m) => !pkgs.hasLocal(m)) ?? []; }); diff --git a/src/components/ModListEntry.vue b/src/components/ModListEntry.vue index c1bb547..52806c8 100644 --- a/src/components/ModListEntry.vue +++ b/src/components/ModListEntry.vue @@ -8,7 +8,8 @@ import LinkButton from './LinkButton.vue'; import ModTitlecard from './ModTitlecard.vue'; import UpdateButton from './UpdateButton.vue'; import { usePkgStore, usePrfStore } from '../stores'; -import { Package } from '../types'; +import { Feature, Package } from '../types'; +import { hasFeature } from '../util'; const prf = usePrfStore(); const pkgs = usePkgStore(); @@ -33,10 +34,10 @@ const model = computed({ diff --git a/src/components/ModTitlecard.vue b/src/components/ModTitlecard.vue index 1f2bc12..c950678 100644 --- a/src/components/ModTitlecard.vue +++ b/src/components/ModTitlecard.vue @@ -1,8 +1,8 @@