fix: neoforge not existing for 26.1 breaking vers picker (#5674)
* fix: neoforge for 26.1 -> other vers being picked not existing causing version picker to break * fix: lint
This commit is contained in:
@@ -254,6 +254,14 @@ async function fetchLoaderManifest(loader: string) {
|
||||
let apiLoader = loader
|
||||
if (apiLoader === 'neoforge') apiLoader = 'neo'
|
||||
|
||||
debug(
|
||||
'fetchLoaderManifest:',
|
||||
loader,
|
||||
'apiLoader:',
|
||||
apiLoader,
|
||||
'cached:',
|
||||
!!loaderVersionsCache.value[apiLoader],
|
||||
)
|
||||
if (loaderVersionsCache.value[apiLoader]) return
|
||||
|
||||
try {
|
||||
@@ -262,7 +270,9 @@ async function fetchLoaderManifest(loader: string) {
|
||||
gameVersions: { id: string; loaders: LoaderVersionEntry[] }[]
|
||||
}
|
||||
loaderVersionsCache.value[apiLoader] = data.gameVersions
|
||||
} catch {
|
||||
debug('fetchLoaderManifest: loaded', apiLoader, 'gameVersions:', data.gameVersions.length)
|
||||
} catch (e) {
|
||||
debug('fetchLoaderManifest: FAILED', apiLoader, e)
|
||||
loaderVersionsCache.value[apiLoader] = []
|
||||
}
|
||||
}
|
||||
@@ -319,13 +329,32 @@ function getLoaderVersionsForGameVersion(
|
||||
if (apiLoader === 'neoforge') apiLoader = 'neo'
|
||||
|
||||
const manifest = loaderVersionsCache.value[apiLoader]
|
||||
debug('getLoaderVersionsForGameVersion:', {
|
||||
loader,
|
||||
apiLoader,
|
||||
gameVersion,
|
||||
hasManifest: !!manifest,
|
||||
manifestLength: manifest?.length,
|
||||
})
|
||||
if (!manifest) return []
|
||||
|
||||
// Some loaders (e.g. Fabric) list all versions under a placeholder entry
|
||||
const placeholder = manifest.find((x) => x.id === '${modrinth.gameVersion}')
|
||||
if (placeholder) return placeholder.loaders
|
||||
if (placeholder) {
|
||||
debug(
|
||||
'getLoaderVersionsForGameVersion: using placeholder, loaders:',
|
||||
placeholder.loaders.length,
|
||||
)
|
||||
return placeholder.loaders
|
||||
}
|
||||
|
||||
const entry = manifest.find((x) => x.id === gameVersion)
|
||||
debug(
|
||||
'getLoaderVersionsForGameVersion: entry for',
|
||||
gameVersion,
|
||||
':',
|
||||
entry ? entry.loaders.length + ' loaders' : 'NOT FOUND',
|
||||
)
|
||||
return entry?.loaders ?? []
|
||||
}
|
||||
|
||||
@@ -348,9 +377,12 @@ watch(
|
||||
)
|
||||
|
||||
// Watch loader + game version to resolve loader versions
|
||||
let loaderVersionWatchId = 0
|
||||
watch(
|
||||
[() => selectedLoader.value, () => selectedGameVersion.value],
|
||||
async ([loader, gameVersion]) => {
|
||||
const watchId = ++loaderVersionWatchId
|
||||
debug('watch [loader, gameVersion] fired:', { loader, gameVersion, watchId })
|
||||
loaderVersionsData.value = []
|
||||
selectedLoaderVersion.value = null
|
||||
|
||||
@@ -360,8 +392,8 @@ watch(
|
||||
|
||||
if (loader === 'paper') {
|
||||
await fetchPaperVersions(gameVersion)
|
||||
if (watchId !== loaderVersionWatchId) return
|
||||
loaderVersionsLoading.value = false
|
||||
// Auto-select latest build
|
||||
const builds = paperVersions.value[gameVersion]
|
||||
if (builds?.length) {
|
||||
selectedLoaderVersion.value = `${builds[0]}`
|
||||
@@ -371,8 +403,8 @@ watch(
|
||||
|
||||
if (loader === 'purpur') {
|
||||
await fetchPurpurVersions(gameVersion)
|
||||
if (watchId !== loaderVersionWatchId) return
|
||||
loaderVersionsLoading.value = false
|
||||
// Auto-select latest build
|
||||
const builds = purpurVersions.value[gameVersion]
|
||||
if (builds?.length) {
|
||||
selectedLoaderVersion.value = builds[0]
|
||||
@@ -381,7 +413,18 @@ watch(
|
||||
}
|
||||
|
||||
await fetchLoaderManifest(loader)
|
||||
if (watchId !== loaderVersionWatchId) {
|
||||
debug('watch [loader, gameVersion]: stale execution, skipping', {
|
||||
watchId,
|
||||
current: loaderVersionWatchId,
|
||||
})
|
||||
return
|
||||
}
|
||||
loaderVersionsData.value = getLoaderVersionsForGameVersion(loader, gameVersion)
|
||||
debug(
|
||||
'watch [loader, gameVersion]: loaderVersionsData set, count:',
|
||||
loaderVersionsData.value.length,
|
||||
)
|
||||
loaderVersionsLoading.value = false
|
||||
|
||||
// Auto-select based on loaderVersionType
|
||||
@@ -395,6 +438,16 @@ watch(
|
||||
)
|
||||
|
||||
function autoSelectLoaderVersion() {
|
||||
debug(
|
||||
'autoSelectLoaderVersion: type:',
|
||||
loaderVersionType.value,
|
||||
'dataCount:',
|
||||
loaderVersionsData.value.length,
|
||||
'stableCount:',
|
||||
loaderVersionsData.value.filter((v) => v.stable).length,
|
||||
'first:',
|
||||
loaderVersionsData.value[0]?.id,
|
||||
)
|
||||
if (loaderVersionType.value === 'stable') {
|
||||
const stable = loaderVersionsData.value.find((v) => v.stable)
|
||||
selectedLoaderVersion.value = stable?.id ?? loaderVersionsData.value[0]?.id ?? null
|
||||
@@ -403,7 +456,7 @@ function autoSelectLoaderVersion() {
|
||||
} else if (loaderVersionType.value === 'other' && !selectedLoaderVersion.value) {
|
||||
selectedLoaderVersion.value = loaderVersionsData.value[0]?.id ?? null
|
||||
}
|
||||
debug('autoSelectLoaderVersion:', selectedLoaderVersion.value, 'type:', loaderVersionType.value)
|
||||
debug('autoSelectLoaderVersion: result:', selectedLoaderVersion.value)
|
||||
}
|
||||
|
||||
const loaderVersionOptions = computed<ComboboxOption<string>[]>(() => {
|
||||
|
||||
Reference in New Issue
Block a user