Fix duplicate version featured links being wrong sometimes Fixes #842 (#1085)

This commit is contained in:
Prospector
2023-04-07 18:43:10 -07:00
committed by GitHub
parent 77f8bfcf25
commit 5fd3a45c64
3 changed files with 18 additions and 2 deletions

View File

@@ -834,7 +834,14 @@ if (
}
versions.value = data.$computeVersions(versions.value, allMembers.value)
featuredVersions.value = data.$computeVersions(featuredVersions.value, allMembers.value)
// Q: Why do this instead of computing the versions of featuredVersions?
// A: It will incorrectly generate the version slugs because it doesn't have the full context of
// all the versions. For example, if version 1.1.0 for Forge is featured but 1.1.0 for Fabric
// is not, but the Fabric one was uploaded first, the Forge version would link to the Fabric
/// version
const featuredIds = featuredVersions.value.map((x) => x.id)
featuredVersions.value = versions.value.filter((version) => featuredIds.includes(version.id))
featuredVersions.value.sort((a, b) => {
const aLatest = a.game_versions[a.game_versions.length - 1]

View File

@@ -1311,8 +1311,12 @@ export default defineNuxtComponent({
])
const newCreatedVersions = this.$computeVersions(versions, this.members)
const featuredIds = featuredVersions.map((x) => x.id)
this.$emit('update:versions', newCreatedVersions)
this.$emit('update:featuredVersions', this.$computeVersions(featuredVersions, this.members))
this.$emit(
'update:featuredVersions',
newCreatedVersions.filter((version) => featuredIds.includes(version.id))
)
this.$emit('update:dependencies', dependencies)
return newCreatedVersions

View File

@@ -34,6 +34,11 @@ export default defineNuxtPlugin((nuxtApp) => {
nuxtApp.provide('formatCategory', formatCategory)
nuxtApp.provide('formatCategoryHeader', formatCategoryHeader)
nuxtApp.provide('formatProjectStatus', formatProjectStatus)
/*
Only use on the complete list of versions for a project, partial lists will generate
the wrong version slugs
*/
nuxtApp.provide('computeVersions', (versions, members) => {
const visitedVersions = []
const returnVersions = []