From b094a30677a2c65b4c3a3e689d8bfa5717a45aac Mon Sep 17 00:00:00 2001 From: "Adrian O.V" <83074853+CodexAdrian@users.noreply.github.com> Date: Mon, 8 May 2023 19:27:27 -0400 Subject: [PATCH] Non modpack wireup & Project to profile install (#90) * Base impl * Make project type selectable * Update Browse.vue * address changes * Quick create * Run linter * fix merge * Addressed changes * Installation improvements * Run lint * resourcepacks * automatic installation of dependencies * Fix bugs with search * Addressed changes * Run linter * Fixed direct install not working * Remove back to search * Update Index.vue * Addressed some changes * Shader fix * fix resetting * Update Browse.vue * fixed install not working properly * Update Index.vue --------- Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com> Co-authored-by: Jai A --- theseus_gui/src/App.vue | 2 +- .../src/assets/stylesheets/global.scss | 1 + theseus_gui/src/components/ui/Instance.vue | 44 ++- .../components/ui/InstanceInstallModal.vue | 297 ++++++++++++++++++ theseus_gui/src/helpers/utils.js | 27 ++ theseus_gui/src/pages/Browse.vue | 153 +++++++-- theseus_gui/src/pages/Library.vue | 2 +- theseus_gui/src/pages/instance/Index.vue | 10 +- theseus_gui/src/pages/instance/Mods.vue | 36 ++- theseus_gui/src/pages/project/Index.vue | 107 ++++++- theseus_gui/src/pages/project/Version.vue | 18 +- theseus_gui/src/pages/project/Versions.vue | 19 +- theseus_gui/src/routes.js | 2 +- theseus_gui/src/store/search.js | 21 +- 14 files changed, 675 insertions(+), 64 deletions(-) create mode 100644 theseus_gui/src/components/ui/InstanceInstallModal.vue 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 @@