fix: malformed versions causing versions list page to crash (#6315)

This commit is contained in:
Truman Gao
2026-06-05 03:49:59 -06:00
committed by GitHub
parent 352a196795
commit c653228fe7
7 changed files with 61 additions and 28 deletions
@@ -83,7 +83,6 @@ const props = withDefaults(
{
page: 1,
count: 1,
linkFunction: (page: number) => void page,
},
)
@@ -327,15 +327,22 @@ const props = withDefaults(
)
function getModpackLoaders(version: VersionWithDisplayUrlEnding): string[] {
const loaders = Array.isArray(version.loaders) ? version.loaders : []
if (props.project.project_type !== 'modpack') {
return version.loaders
return loaders
}
if (version.mrpack_loaders?.length) {
return version.mrpack_loaders
const mrpackLoaders = Array.isArray(version.mrpack_loaders) ? version.mrpack_loaders : []
if (mrpackLoaders.length) {
return mrpackLoaders
}
return version.loaders.filter((loader) => loader !== 'mrpack')
return loaders.filter((loader) => loader !== 'mrpack')
}
function getGameVersions(version: VersionWithDisplayUrlEnding): string[] {
return Array.isArray(version.game_versions) ? version.game_versions : []
}
function hasNoModLoader(loaders: string[]): boolean {
@@ -350,10 +357,12 @@ function hasNoModLoader(loaders: string[]): boolean {
const normalizedVersions = computed<DisplayVersion[]>(() =>
props.versions.map((version) => {
const loaders = getModpackLoaders(version)
const gameVersions = getGameVersions(version)
const noModLoader = hasNoModLoader(loaders)
return {
...version,
game_versions: gameVersions,
loaders: noModLoader ? [] : loaders,
noModLoader,
}
@@ -109,15 +109,15 @@ const filterOptions = computed(() => {
platform: [],
}
const platformSet = new Set()
const gameVersionSet = new Set()
const channelSet = new Set()
const platformSet = new Set<Filter>()
const gameVersionSet = new Set<Filter>()
const channelSet = new Set<Filter>()
for (const version of props.versions) {
for (const loader of version.loaders) {
for (const loader of Array.isArray(version.loaders) ? version.loaders : []) {
platformSet.add(loader)
}
for (const gameVersion of version.game_versions) {
for (const gameVersion of Array.isArray(version.game_versions) ? version.game_versions : []) {
gameVersionSet.add(gameVersion)
}
channelSet.add(version.version_type)