From 5fd3a45c64afc13d9c4b5934bb11f572403b3b0d Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Fri, 7 Apr 2023 18:43:10 -0700 Subject: [PATCH] Fix duplicate version featured links being wrong sometimes Fixes #842 (#1085) --- pages/[type]/[id].vue | 9 ++++++++- pages/[type]/[id]/version/[version].vue | 6 +++++- plugins/shorthands.js | 5 +++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/pages/[type]/[id].vue b/pages/[type]/[id].vue index 9ddaee65e..4fe114df4 100644 --- a/pages/[type]/[id].vue +++ b/pages/[type]/[id].vue @@ -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] diff --git a/pages/[type]/[id]/version/[version].vue b/pages/[type]/[id]/version/[version].vue index 1bc68078c..f33854d90 100644 --- a/pages/[type]/[id]/version/[version].vue +++ b/pages/[type]/[id]/version/[version].vue @@ -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 diff --git a/plugins/shorthands.js b/plugins/shorthands.js index 5046eb9ea..93425c042 100644 --- a/plugins/shorthands.js +++ b/plugins/shorthands.js @@ -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 = []