diff --git a/apps/frontend/src/middleware/april-fools-collection-redirect.global.ts b/apps/frontend/src/middleware/april-fools-collection-redirect.global.ts new file mode 100644 index 000000000..29de4fb24 --- /dev/null +++ b/apps/frontend/src/middleware/april-fools-collection-redirect.global.ts @@ -0,0 +1,10 @@ +const COLLECTION_PREFIX = '/collection/bLYCa4PJ' + +export default defineNuxtRouteMiddleware((to) => { + if (to.path === COLLECTION_PREFIX || to.path.startsWith(`${COLLECTION_PREFIX}/`)) { + return navigateTo(`https://april-fools-2026.modrinth.com${to.fullPath}`, { + external: true, + redirectCode: 302, + }) + } +}) diff --git a/apps/frontend/src/pages/collection/[id].vue b/apps/frontend/src/pages/collection/[id].vue index a8ec70ea7..b3e0f285f 100644 --- a/apps/frontend/src/pages/collection/[id].vue +++ b/apps/frontend/src/pages/collection/[id].vue @@ -290,6 +290,7 @@ } }), ]" + class="mb-4" /> organizations.value ? [...organizations.value].sort((a, b) => a.name.localeCompare(b.name)) : [], ) +const sortedCollections = computed(() => { + const list = collections.value + if (!list?.length) return [] + return [...list].sort((a, b) => { + const updatedB = new Date(b.updated).getTime() + const updatedA = new Date(a.updated).getTime() + if (updatedB !== updatedA) return updatedB - updatedA + return new Date(b.created).getTime() - new Date(a.created).getTime() + }) +}) + const title = computed(() => (user.value ? `${user.value.username} - Modrinth` : 'Modrinth')) const description = computed(() => user.value?.bio