mirror of
https://github.com/modrinth/code.git
synced 2026-09-03 13:36:48 +00:00
fix: vers page link query persistence
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
:current-title="version.name"
|
:current-title="version.name"
|
||||||
:link-stack="[
|
:link-stack="[
|
||||||
{
|
{
|
||||||
href: `/project/${route.params.id}/versions`,
|
href: buildProjectHref(`/project/${route.params.id}/versions`),
|
||||||
label: 'Versions',
|
label: 'Versions',
|
||||||
},
|
},
|
||||||
]"
|
]"
|
||||||
@@ -249,6 +249,19 @@ const author = computed(() =>
|
|||||||
|
|
||||||
const displayDependencies = ref({})
|
const displayDependencies = ref({})
|
||||||
|
|
||||||
|
function buildProjectHref(path) {
|
||||||
|
const params = new URLSearchParams()
|
||||||
|
for (const [key, val] of Object.entries(route.query)) {
|
||||||
|
if (Array.isArray(val)) {
|
||||||
|
for (const v of val) params.append(key, v)
|
||||||
|
} else if (val) {
|
||||||
|
params.append(key, String(val))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const qs = params.toString()
|
||||||
|
return qs ? `${path}?${qs}` : path
|
||||||
|
}
|
||||||
|
|
||||||
async function refreshDisplayDependencies() {
|
async function refreshDisplayDependencies() {
|
||||||
const projectIds = new Set()
|
const projectIds = new Set()
|
||||||
const versionIds = new Set()
|
const versionIds = new Set()
|
||||||
@@ -282,7 +295,7 @@ async function refreshDisplayDependencies() {
|
|||||||
icon: project?.icon_url,
|
icon: project?.icon_url,
|
||||||
title: project?.title || project?.name,
|
title: project?.title || project?.name,
|
||||||
subtitle: `Version ${version.version_number} is ${dependency.dependency_type}`,
|
subtitle: `Version ${version.version_number} is ${dependency.dependency_type}`,
|
||||||
link: `/project/${project.slug}/version/${version.id}`,
|
link: buildProjectHref(`/project/${project.slug}/version/${version.id}`),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
const project = dependencies.projects.find((obj) => obj.id === dependency.project_id)
|
const project = dependencies.projects.find((obj) => obj.id === dependency.project_id)
|
||||||
@@ -292,7 +305,7 @@ async function refreshDisplayDependencies() {
|
|||||||
icon: project?.icon_url,
|
icon: project?.icon_url,
|
||||||
title: project?.title || project?.name,
|
title: project?.title || project?.name,
|
||||||
subtitle: `${dependency.dependency_type}`,
|
subtitle: `${dependency.dependency_type}`,
|
||||||
link: `/project/${project.slug}`,
|
link: buildProjectHref(`/project/${project.slug}`),
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
:game-versions="gameVersions"
|
:game-versions="gameVersions"
|
||||||
:versions="versions"
|
:versions="versions"
|
||||||
:project="project"
|
:project="project"
|
||||||
:version-link="(version) => `/project/${project.id}/version/${version.id}`"
|
:version-link="(version) => buildProjectHref(`/project/${project.id}/version/${version.id}`)"
|
||||||
>
|
>
|
||||||
<template #actions="{ version }">
|
<template #actions="{ version }">
|
||||||
<ButtonStyled circular type="transparent">
|
<ButtonStyled circular type="transparent">
|
||||||
@@ -73,6 +73,7 @@ import {
|
|||||||
ProjectPageVersions,
|
ProjectPageVersions,
|
||||||
} from '@modrinth/ui'
|
} from '@modrinth/ui'
|
||||||
import { ref } from 'vue'
|
import { ref } from 'vue'
|
||||||
|
import { useRoute } from 'vue-router'
|
||||||
|
|
||||||
import { SwapIcon } from '@/assets/icons/index.js'
|
import { SwapIcon } from '@/assets/icons/index.js'
|
||||||
import { get_game_versions, get_loaders } from '@/helpers/tags.js'
|
import { get_game_versions, get_loaders } from '@/helpers/tags.js'
|
||||||
@@ -109,6 +110,20 @@ defineProps({
|
|||||||
})
|
})
|
||||||
|
|
||||||
const { handleError } = injectNotificationManager()
|
const { handleError } = injectNotificationManager()
|
||||||
|
const route = useRoute()
|
||||||
|
|
||||||
|
function buildProjectHref(path) {
|
||||||
|
const params = new URLSearchParams()
|
||||||
|
for (const [key, val] of Object.entries(route.query)) {
|
||||||
|
if (Array.isArray(val)) {
|
||||||
|
for (const v of val) params.append(key, v)
|
||||||
|
} else if (val) {
|
||||||
|
params.append(key, String(val))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const qs = params.toString()
|
||||||
|
return qs ? `${path}?${qs}` : path
|
||||||
|
}
|
||||||
|
|
||||||
const [loaders, gameVersions] = await Promise.all([
|
const [loaders, gameVersions] = await Promise.all([
|
||||||
get_loaders().catch(handleError).then(ref),
|
get_loaders().catch(handleError).then(ref),
|
||||||
|
|||||||
Reference in New Issue
Block a user