diff --git a/theseus_gui/src/App.vue b/theseus_gui/src/App.vue index 5b1c848a..ca735f15 100644 --- a/theseus_gui/src/App.vue +++ b/theseus_gui/src/App.vue @@ -50,7 +50,7 @@ list().then( Home - + + +
+ {{ props.instance.metadata.name }} + {{ + props.instance.metadata.loader.charAt(0).toUpperCase() + + props.instance.metadata.loader.slice(1) + }} + {{ props.instance.metadata.game_version }} +
+
+ Trending mod card

{{ props.instance.metadata.name }}

@@ -32,6 +51,27 @@ const props = defineProps({ diff --git a/theseus_gui/src/helpers/utils.js b/theseus_gui/src/helpers/utils.js index 83238da9..9e9ff599 100644 --- a/theseus_gui/src/helpers/utils.js +++ b/theseus_gui/src/helpers/utils.js @@ -1,3 +1,6 @@ +import { add_project_from_version as installMod } from '@/helpers/profile' +import { ofetch } from 'ofetch' + export const releaseColor = (releaseType) => { switch (releaseType) { case 'release': @@ -10,3 +13,27 @@ export const releaseColor = (releaseType) => { return '' } } + +export const checkInstalled = (profile, projectId) => { + return Object.values(profile.projects).some((p) => p.metadata?.project?.id === projectId) +} + +export const installVersionDependencies = async (profile, version) => { + for (const dep of version.dependencies) { + if (dep.version_id) { + if (checkInstalled(profile, dep.project_id)) continue + await installMod(profile.path, dep.version_id) + } else { + if (checkInstalled(profile, dep.project_id)) continue + const depVersions = await ofetch( + `https://api.modrinth.com/v2/project/${dep.project_id}/version` + ) + const latest = depVersions.find( + (v) => + v.game_versions.includes(profile.metadata.game_version) && + v.loaders.includes(profile.metadata.loader) + ) + await installMod(profile.path, latest.id) + } + } +} diff --git a/theseus_gui/src/pages/Browse.vue b/theseus_gui/src/pages/Browse.vue index 1cb5a94d..fc42b1da 100644 --- a/theseus_gui/src/pages/Browse.vue +++ b/theseus_gui/src/pages/Browse.vue @@ -1,5 +1,5 @@