mirror of
https://github.com/modrinth/code.git
synced 2026-08-27 01:54:47 +00:00
feat: clean up browse shared layout logic + introduce queuing (#6030)
* feat: clean up edge case behaviour and add queued to install logic * fix: remove version choice modal * feat: queued flow * feat: standardize headers in app on proj pages * fix: clear btn * feat: installing floating popup * fix: lint * fix: onboarding/reset logic change for modpacks * qa: big ol qa * fix: lint * fix: lint --------- Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
This commit is contained in:
@@ -0,0 +1,43 @@
|
||||
import { type Labrinth, ModrinthApiError } from '@modrinth/api-client'
|
||||
|
||||
import { useServerModrinthClient } from '~/server/utils/api-client'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const id = getRouterParam(event, 'id')
|
||||
|
||||
if (!id) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'Missing organization',
|
||||
})
|
||||
}
|
||||
|
||||
const client = useServerModrinthClient({ event })
|
||||
|
||||
let organization: Labrinth.Organizations.v3.Organization
|
||||
try {
|
||||
organization = await client.labrinth.organizations_v3.get(id)
|
||||
} catch (error) {
|
||||
if (error instanceof ModrinthApiError && error.statusCode === 404) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
message: 'Organization not found',
|
||||
})
|
||||
}
|
||||
|
||||
throw createError({
|
||||
statusCode: 502,
|
||||
message: 'Failed to resolve organization avatar',
|
||||
})
|
||||
}
|
||||
|
||||
if (!organization.icon_url) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
message: 'Organization avatar not found',
|
||||
})
|
||||
}
|
||||
|
||||
setHeader(event, 'cache-control', 'public, max-age=300, s-maxage=600')
|
||||
return sendRedirect(event, organization.icon_url, 302)
|
||||
})
|
||||
@@ -0,0 +1,43 @@
|
||||
import { type Labrinth, ModrinthApiError } from '@modrinth/api-client'
|
||||
|
||||
import { useServerModrinthClient } from '~/server/utils/api-client'
|
||||
|
||||
export default defineEventHandler(async (event) => {
|
||||
const username = getRouterParam(event, 'username')
|
||||
|
||||
if (!username) {
|
||||
throw createError({
|
||||
statusCode: 400,
|
||||
message: 'Missing username',
|
||||
})
|
||||
}
|
||||
|
||||
const client = useServerModrinthClient({ event })
|
||||
|
||||
let user: Labrinth.Users.v2.User
|
||||
try {
|
||||
user = await client.labrinth.users_v2.get(username)
|
||||
} catch (error) {
|
||||
if (error instanceof ModrinthApiError && error.statusCode === 404) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
message: 'User not found',
|
||||
})
|
||||
}
|
||||
|
||||
throw createError({
|
||||
statusCode: 502,
|
||||
message: 'Failed to resolve user avatar',
|
||||
})
|
||||
}
|
||||
|
||||
if (!user.avatar_url) {
|
||||
throw createError({
|
||||
statusCode: 404,
|
||||
message: 'User avatar not found',
|
||||
})
|
||||
}
|
||||
|
||||
setHeader(event, 'cache-control', 'public, max-age=300, s-maxage=600')
|
||||
return sendRedirect(event, user.avatar_url, 302)
|
||||
})
|
||||
Reference in New Issue
Block a user