Proper handling of modpack loaders (#4940)

* fix handling modpack loader

* fix order

* increase timeout

* fix search erroring on non alphanumeric input for searching project id
This commit is contained in:
Truman Gao
2025-12-19 15:24:40 -08:00
committed by GitHub
parent 67835b04a8
commit 1e9e13aebb
6 changed files with 20 additions and 14 deletions

View File

@@ -44,10 +44,7 @@ async function openEditVersionModal(versionId: string, projectId: string, stageI
dependencies: versionData.dependencies ?? [],
existing_files: versionData.files ?? [],
environment: versionData.environment,
}
if (projectV2.value.project_type === 'modpack' && draftVersionData.loaders.includes('mrpack')) {
draftVersionData.loaders.push(...(versionData.mrpack_loaders ?? []))
mrpack_loaders: versionData.mrpack_loaders,
}
openCreateVersionModal(draftVersionData, stageId)

View File

@@ -26,7 +26,8 @@ const options = ref<DropdownOption<string>[]>([])
const { labrinth } = injectModrinthClient()
const search = async (query: string) => {
if (!query.trim()) {
query = query.trim()
if (!query) {
searchLoading.value = false
return
}
@@ -49,7 +50,7 @@ const search = async (query: string) => {
const resultsByProjectId = await labrinth.projects_v2.search({
query: '',
limit: 20,
facets: [[`project_id:${query}`]],
facets: [[`project_id:${query.replace(/[^a-zA-Z0-9]/g, '')}`]], // remove any non-alphanumeric characters
})
options.value = [...resultsByProjectId.hits, ...results.hits].map((hit) => ({

View File

@@ -5,7 +5,7 @@
<div class="flex flex-col gap-3 rounded-2xl border border-solid border-surface-5 p-4">
<div class="grid gap-2.5">
<span class="font-semibold text-contrast">Project <span class="text-red">*</span></span>
<ModSelect v-model="newDependencyProjectId" />
<DependencySelect v-model="newDependencyProjectId" />
</div>
<template v-if="newDependencyProjectId">
@@ -92,7 +92,7 @@ import {
} from '@modrinth/ui'
import type { DropdownOption } from '@modrinth/ui/src/components/base/Combobox.vue'
import ModSelect from '~/components/ui/create-project-version/components/DependencySelect.vue'
import DependencySelect from '~/components/ui/create-project-version/components/DependencySelect.vue'
import { injectManageVersionContext } from '~/providers/version/manage-version-modal'
import AddedDependencyRow from '../components/AddedDependencyRow.vue'

View File

@@ -6,7 +6,7 @@
</span>
<Chips
v-model="draftVersion.version_type"
:items="['release', 'alpha', 'beta']"
:items="['release', 'beta', 'alpha']"
:never-empty="true"
:capitalize="true"
/>
@@ -61,7 +61,7 @@
>
<div class="flex flex-wrap gap-2">
<template
v-for="loader in draftVersion.loaders.map((selectedLoader) =>
v-for="loader in draftVersionLoaders.map((selectedLoader) =>
loaders.find((loader) => selectedLoader === loader.name),
)"
>
@@ -175,6 +175,12 @@ const generatedState = useGeneratedState()
const loaders = computed(() => generatedState.value.loaders)
const isModpack = computed(() => projectType.value === 'modpack')
const draftVersionLoaders = computed(() =>
[
...new Set([...draftVersion.value.loaders, ...(draftVersion.value.mrpack_loaders ?? [])]),
].filter((loader) => loader !== 'mrpack'),
)
const editLoaders = () => {
modal.value?.setStage('from-details-loaders')
}

View File

@@ -297,7 +297,7 @@ export function createManageVersionContext(
try {
if (!version.version_id) throw new Error('Version ID is required to save edits.')
await labrinth.versions_v3.modifyVersion(version.version_id, {
const data: Labrinth.Versions.v3.ModifyVersionRequest = {
name: version.name || version.version_number,
version_number: version.version_number,
changelog: version.changelog,
@@ -313,7 +313,9 @@ export function createManageVersionContext(
hash: file.hashes.sha1,
file_type: file.file_type ?? null,
})),
})
}
await labrinth.versions_v3.modifyVersion(version.version_id, data)
if (files.length > 0) {
await labrinth.versions_v3.addFilesToVersion(version.version_id, files)

View File

@@ -190,7 +190,7 @@ export class LabrinthVersionsV3Module extends AbstractModule {
version: 3,
method: 'POST',
body: formData,
timeout: 120000,
timeout: 60 * 5 * 1000,
headers: {
'Content-Type': '',
},
@@ -281,7 +281,7 @@ export class LabrinthVersionsV3Module extends AbstractModule {
version: 2,
method: 'POST',
body: formData,
timeout: 120000,
timeout: 60 * 5 * 1000,
headers: {
'Content-Type': '',
},