Skip to content

Commit be5ebac

Browse files
authored
fix: switching vers fix (#5574)
1 parent 989f282 commit be5ebac

1 file changed

Lines changed: 34 additions & 3 deletions

File tree

  • apps/app-frontend/src/pages/instance

apps/app-frontend/src/pages/instance/Mods.vue

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ import { get_project_versions, get_version } from '@/helpers/cache.js'
9292
import { profile_listener } from '@/helpers/events.js'
9393
import {
9494
add_project_from_path,
95+
add_project_from_version,
9596
duplicate,
9697
edit,
9798
get,
@@ -351,6 +352,34 @@ async function updateProject(mod: ContentItem) {
351352
}
352353
}
353354
355+
async function switchProjectVersion(mod: ContentItem, version: Labrinth.Versions.v2.Version) {
356+
try {
357+
await remove_project(props.instance.path, mod.file_path!)
358+
const newPath = await add_project_from_version(props.instance.path, version.id)
359+
360+
const profile = await get(props.instance.path).catch(handleError)
361+
if (profile) {
362+
await installVersionDependencies(profile, version).catch(handleError)
363+
}
364+
365+
mod.file_path = newPath
366+
if (mod.version) {
367+
mod.version.id = version.id
368+
mod.version.version_number = version.version_number
369+
}
370+
371+
trackEvent('InstanceProjectSwitchVersion', {
372+
loader: props.instance.loader,
373+
game_version: props.instance.game_version,
374+
id: mod.project?.id,
375+
name: mod.project?.title ?? mod.file_name,
376+
project_type: mod.project_type,
377+
})
378+
} catch (err) {
379+
handleError(err as Error)
380+
}
381+
}
382+
354383
async function handleUpdate(id: string) {
355384
const item = projects.value.find((p) => p.file_name === id)
356385
if (!item?.has_update || !item.project?.id || !item.version?.id) return
@@ -570,9 +599,11 @@ async function handleModalUpdate(
570599
} else if (updatingProject.value) {
571600
const mod = updatingProject.value
572601
573-
mod.update_version_id = selectedVersion.id
574-
575-
await updateProject(mod)
602+
if (mod.has_update && mod.update_version_id === selectedVersion.id) {
603+
await updateProject(mod)
604+
} else {
605+
await switchProjectVersion(mod, selectedVersion)
606+
}
576607
577608
resetUpdateState()
578609
}

0 commit comments

Comments
 (0)