You've already forked AstralRinth
681ae5d1d8
* refactor: most places with useAsyncData replaced with tanstack query * refactor report list and report view * refactor organization page to use tanstack query * fix types * refactor collection page and include proper loading state * fix followed projects proper loading state * fix 404 handling * fix organization loading and 404 states * pnpm prepr * refactor: remove useAsyncData on newsletter button * refactor: remove useAsyncData on auth globals fetch * refactor: settings/billing/index.vue to useQuery instead of useAsyncData * refactor: user page to remove useAsyncData * pnpm prepr * fix reports pages * fix notifications page * fix billing page cannot read properties of null and prop warnings * fix refresh causing 404 by removing useBaseFetch and use api-client * fix stale data after removing organization from project * pnpm prepr * fix news erroring in build * fix: project page loads header only after content * fix: user page tanstack problems (start on migrating away from useBaseFetch) * fix: start swapping useBaseFetch usages to api-client * Revert "fix: start swapping useBaseFetch usages to api-client" This reverts commit 3df3fab11d535159132b1288dd7cacc38282b553. * fix: remove debug logging * fix: lint --------- Co-authored-by: Calum H. <calum@modrinth.com> Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
32 lines
832 B
TypeScript
32 lines
832 B
TypeScript
import { useAppQueryClient } from '~/composables/query-client'
|
|
import { useServerModrinthClient } from '~/server/utils/api-client'
|
|
|
|
export default defineNuxtRouteMiddleware(async (to) => {
|
|
if (!to.path.startsWith('/user/') || !to.params.id) {
|
|
return
|
|
}
|
|
|
|
const queryClient = useAppQueryClient()
|
|
const authToken = useCookie('auth-token')
|
|
const client = useServerModrinthClient({ authToken: authToken.value || undefined })
|
|
const userId = to.params.id as string
|
|
|
|
try {
|
|
const user = await queryClient.fetchQuery({
|
|
queryKey: ['user', userId],
|
|
queryFn: () => client.labrinth.users_v2.get(userId),
|
|
})
|
|
|
|
if (!user) return
|
|
|
|
if (user.username !== userId) {
|
|
return navigateTo(`/user/${user.username}`, {
|
|
redirectCode: 301,
|
|
replace: true,
|
|
})
|
|
}
|
|
} catch {
|
|
// Let the page handle 404s and other errors
|
|
}
|
|
})
|