feat: initial chunithm support

This commit is contained in:
2025-03-19 17:39:12 +00:00
parent 1191cdd95c
commit 8ac45df3e1
31 changed files with 1368 additions and 884 deletions

View File

@ -1,11 +1,13 @@
<script setup lang="ts">
import { computed, ref } from 'vue';
import { Ref, computed, ref } from 'vue';
import Button from 'primevue/button';
import Fieldset from 'primevue/fieldset';
import ModListEntry from './ModListEntry.vue';
import ModTitlecard from './ModTitlecard.vue';
import { invoke } from '../invoke';
import { usePkgStore, usePrfStore } from '../stores';
import { Package } from '../types';
import { pkgKey } from '../util';
const props = defineProps({
search: String,
@ -14,12 +16,20 @@ const props = defineProps({
const pkgs = usePkgStore();
const prf = usePrfStore();
const empty = ref(true);
const gameSublist: Ref<string[]> = ref([]);
const group = () => {
const a = Object.assign(
invoke('get_game_packages', {
game: prf.current?.meta.game,
}).then((list) => {
gameSublist.value = list as string[];
});
const group = computed(() => {
const res = Object.assign(
{},
Object.groupBy(
pkgs.allLocal
.filter((p) => gameSublist.value.includes(pkgKey(p)))
.filter(
(p) =>
props.search === undefined ||
@ -35,12 +45,12 @@ const group = () => {
({ namespace }) => namespace
)
);
empty.value = Object.keys(a).length === 0;
return a;
};
empty.value = Object.keys(res).length === 0;
return res;
});
const missing = computed(() => {
return prf.current?.mods.filter((m) => !pkgs.hasLocal(m)) ?? [];
return prf.current?.data.mods.filter((m) => !pkgs.hasLocal(m)) ?? [];
});
</script>
@ -68,7 +78,7 @@ const missing = computed(() => {
/>
</div>
</Fieldset>
<Fieldset v-for="(namespace, key) in group()" :legend="key.toString()">
<Fieldset v-for="(namespace, key) in group" :legend="key.toString()">
<ModListEntry v-for="p in namespace" :pkg="p" />
</Fieldset>
<div v-if="empty" class="text-3xl"></div>