From 28337c88f64f25835160d8d802e2fc22ac639b30 Mon Sep 17 00:00:00 2001 From: Prospector <6166773+Prospector@users.noreply.github.com> Date: Sun, 31 Aug 2025 10:22:38 -0700 Subject: [PATCH] Fix redirect from project ID (#4298) * Fix redirect from project ID * improve fix * lint --- apps/frontend/src/pages/[type]/[id].vue | 62 ++++++++++++++----------- 1 file changed, 35 insertions(+), 27 deletions(-) diff --git a/apps/frontend/src/pages/[type]/[id].vue b/apps/frontend/src/pages/[type]/[id].vue index 4d8c655c..d9094b27 100644 --- a/apps/frontend/src/pages/[type]/[id].vue +++ b/apps/frontend/src/pages/[type]/[id].vue @@ -1005,7 +1005,6 @@ import { reportProject } from '~/utils/report-helpers.ts' const data = useNuxtApp() const route = useNativeRoute() -const router = useRouter() const config = useRuntimeConfig() const moderationStore = useModerationStore() const notifications = injectNotificationManager() @@ -1440,30 +1439,18 @@ try { tags.value, ) projectId.value = project.id - if (route.params.id !== project.slug) { - router.replace({ - name: route.name, - params: { - ...route.params, - id: project.slug, - }, - query: route.query, - hash: route.hash, - }) - } } - return project }, }), - useAsyncData(`projectV3/${route.params.id}`, () => - useBaseFetch(`project/${route.params.id}`, { + useAsyncData(`projectV3/${projectId.value}`, () => + useBaseFetch(`project/${projectId.value}`, { apiVersion: 3, }), ), useAsyncData( - `project/${route.params.id}/members`, - () => useBaseFetch(`project/${route.params.id}/members`, { apiVersion: 3 }), + `project/${projectId.value}/members`, + () => useBaseFetch(`project/${projectId.value}/members`, { apiVersion: 3 }), { transform: (members) => { members.forEach((it, index) => { @@ -1475,20 +1462,22 @@ try { }, }, ), - useAsyncData(`project/${route.params.id}/dependencies`, () => - useBaseFetch(`project/${route.params.id}/dependencies`, {}), + useAsyncData(`project/${projectId.value}/dependencies`, () => + useBaseFetch(`project/${projectId.value}/dependencies`, {}), ), - useAsyncData(`project/${route.params.id}/version?featured=true`, () => - useBaseFetch(`project/${route.params.id}/version?featured=true`), + useAsyncData(`project/${projectId.value}/version?featured=true`, () => + useBaseFetch(`project/${projectId.value}/version?featured=true`), ), - useAsyncData(`project/${route.params.id}/version`, () => - useBaseFetch(`project/${route.params.id}/version`), + useAsyncData(`project/${projectId.value}/version`, () => + useBaseFetch(`project/${projectId.value}/version`), ), - useAsyncData(`project/${route.params.id}/organization`, () => - useBaseFetch(`project/${route.params.id}/organization`, { apiVersion: 3 }), + useAsyncData(`project/${projectId.value}/organization`, () => + useBaseFetch(`project/${projectId.value}/organization`, { apiVersion: 3 }), ), ]) + await updateProjectRoute() + versions = shallowRef(toRaw(versions)) featuredVersions = shallowRef(toRaw(featuredVersions)) } catch (err) { @@ -1501,6 +1490,23 @@ try { }) } +async function updateProjectRoute() { + if (project.value && route.params.id !== project.value.slug) { + await navigateTo( + { + name: route.name, + params: { + ...route.params, + id: project.value.slug, + }, + query: route.query, + hash: route.hash, + }, + { replace: true }, + ) + } +} + async function resetProject() { await resetProjectV2() await resetProjectV3() @@ -1714,6 +1720,8 @@ async function patchProject(resData, quiet = false) { project.value[key] = resData[key] } + await updateProjectRoute() + if (resData.license_id) { project.value.license.id = resData.license_id } @@ -1781,8 +1789,8 @@ async function patchIcon(icon) { async function updateMembers() { allMembers.value = await useAsyncData( - `project/${route.params.id}/members`, - () => useBaseFetch(`project/${route.params.id}/members`), + `project/${projectId.value}/members`, + () => useBaseFetch(`project/${projectId.value}/members`), { transform: (members) => { members.forEach((it, index) => {