You've already forked AstralRinth
forked from didirus/AstralRinth
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:
@@ -44,10 +44,7 @@ async function openEditVersionModal(versionId: string, projectId: string, stageI
|
|||||||
dependencies: versionData.dependencies ?? [],
|
dependencies: versionData.dependencies ?? [],
|
||||||
existing_files: versionData.files ?? [],
|
existing_files: versionData.files ?? [],
|
||||||
environment: versionData.environment,
|
environment: versionData.environment,
|
||||||
}
|
mrpack_loaders: versionData.mrpack_loaders,
|
||||||
|
|
||||||
if (projectV2.value.project_type === 'modpack' && draftVersionData.loaders.includes('mrpack')) {
|
|
||||||
draftVersionData.loaders.push(...(versionData.mrpack_loaders ?? []))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
openCreateVersionModal(draftVersionData, stageId)
|
openCreateVersionModal(draftVersionData, stageId)
|
||||||
|
|||||||
@@ -26,7 +26,8 @@ const options = ref<DropdownOption<string>[]>([])
|
|||||||
const { labrinth } = injectModrinthClient()
|
const { labrinth } = injectModrinthClient()
|
||||||
|
|
||||||
const search = async (query: string) => {
|
const search = async (query: string) => {
|
||||||
if (!query.trim()) {
|
query = query.trim()
|
||||||
|
if (!query) {
|
||||||
searchLoading.value = false
|
searchLoading.value = false
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -49,7 +50,7 @@ const search = async (query: string) => {
|
|||||||
const resultsByProjectId = await labrinth.projects_v2.search({
|
const resultsByProjectId = await labrinth.projects_v2.search({
|
||||||
query: '',
|
query: '',
|
||||||
limit: 20,
|
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) => ({
|
options.value = [...resultsByProjectId.hits, ...results.hits].map((hit) => ({
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<div class="flex flex-col gap-3 rounded-2xl border border-solid border-surface-5 p-4">
|
<div class="flex flex-col gap-3 rounded-2xl border border-solid border-surface-5 p-4">
|
||||||
<div class="grid gap-2.5">
|
<div class="grid gap-2.5">
|
||||||
<span class="font-semibold text-contrast">Project <span class="text-red">*</span></span>
|
<span class="font-semibold text-contrast">Project <span class="text-red">*</span></span>
|
||||||
<ModSelect v-model="newDependencyProjectId" />
|
<DependencySelect v-model="newDependencyProjectId" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<template v-if="newDependencyProjectId">
|
<template v-if="newDependencyProjectId">
|
||||||
@@ -92,7 +92,7 @@ import {
|
|||||||
} from '@modrinth/ui'
|
} from '@modrinth/ui'
|
||||||
import type { DropdownOption } from '@modrinth/ui/src/components/base/Combobox.vue'
|
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 { injectManageVersionContext } from '~/providers/version/manage-version-modal'
|
||||||
|
|
||||||
import AddedDependencyRow from '../components/AddedDependencyRow.vue'
|
import AddedDependencyRow from '../components/AddedDependencyRow.vue'
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
</span>
|
</span>
|
||||||
<Chips
|
<Chips
|
||||||
v-model="draftVersion.version_type"
|
v-model="draftVersion.version_type"
|
||||||
:items="['release', 'alpha', 'beta']"
|
:items="['release', 'beta', 'alpha']"
|
||||||
:never-empty="true"
|
:never-empty="true"
|
||||||
:capitalize="true"
|
:capitalize="true"
|
||||||
/>
|
/>
|
||||||
@@ -61,7 +61,7 @@
|
|||||||
>
|
>
|
||||||
<div class="flex flex-wrap gap-2">
|
<div class="flex flex-wrap gap-2">
|
||||||
<template
|
<template
|
||||||
v-for="loader in draftVersion.loaders.map((selectedLoader) =>
|
v-for="loader in draftVersionLoaders.map((selectedLoader) =>
|
||||||
loaders.find((loader) => selectedLoader === loader.name),
|
loaders.find((loader) => selectedLoader === loader.name),
|
||||||
)"
|
)"
|
||||||
>
|
>
|
||||||
@@ -175,6 +175,12 @@ const generatedState = useGeneratedState()
|
|||||||
const loaders = computed(() => generatedState.value.loaders)
|
const loaders = computed(() => generatedState.value.loaders)
|
||||||
const isModpack = computed(() => projectType.value === 'modpack')
|
const isModpack = computed(() => projectType.value === 'modpack')
|
||||||
|
|
||||||
|
const draftVersionLoaders = computed(() =>
|
||||||
|
[
|
||||||
|
...new Set([...draftVersion.value.loaders, ...(draftVersion.value.mrpack_loaders ?? [])]),
|
||||||
|
].filter((loader) => loader !== 'mrpack'),
|
||||||
|
)
|
||||||
|
|
||||||
const editLoaders = () => {
|
const editLoaders = () => {
|
||||||
modal.value?.setStage('from-details-loaders')
|
modal.value?.setStage('from-details-loaders')
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -297,7 +297,7 @@ export function createManageVersionContext(
|
|||||||
try {
|
try {
|
||||||
if (!version.version_id) throw new Error('Version ID is required to save edits.')
|
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,
|
name: version.name || version.version_number,
|
||||||
version_number: version.version_number,
|
version_number: version.version_number,
|
||||||
changelog: version.changelog,
|
changelog: version.changelog,
|
||||||
@@ -313,7 +313,9 @@ export function createManageVersionContext(
|
|||||||
hash: file.hashes.sha1,
|
hash: file.hashes.sha1,
|
||||||
file_type: file.file_type ?? null,
|
file_type: file.file_type ?? null,
|
||||||
})),
|
})),
|
||||||
})
|
}
|
||||||
|
|
||||||
|
await labrinth.versions_v3.modifyVersion(version.version_id, data)
|
||||||
|
|
||||||
if (files.length > 0) {
|
if (files.length > 0) {
|
||||||
await labrinth.versions_v3.addFilesToVersion(version.version_id, files)
|
await labrinth.versions_v3.addFilesToVersion(version.version_id, files)
|
||||||
|
|||||||
@@ -190,7 +190,7 @@ export class LabrinthVersionsV3Module extends AbstractModule {
|
|||||||
version: 3,
|
version: 3,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: formData,
|
body: formData,
|
||||||
timeout: 120000,
|
timeout: 60 * 5 * 1000,
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': '',
|
'Content-Type': '',
|
||||||
},
|
},
|
||||||
@@ -281,7 +281,7 @@ export class LabrinthVersionsV3Module extends AbstractModule {
|
|||||||
version: 2,
|
version: 2,
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
body: formData,
|
body: formData,
|
||||||
timeout: 120000,
|
timeout: 60 * 5 * 1000,
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': '',
|
'Content-Type': '',
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user