From 561d064e74f3fffc492c269ec467aff831bf54bf Mon Sep 17 00:00:00 2001 From: BrickheadJohnny Date: Fri, 5 Sep 2025 09:19:02 +0200 Subject: [PATCH] refactor(middleware): use a more compact object for redirects config --- src/middleware.ts | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/src/middleware.ts b/src/middleware.ts index 53eeb6f866..d8848dfea6 100644 --- a/src/middleware.ts +++ b/src/middleware.ts @@ -17,21 +17,27 @@ export const config = { export async function middleware(request: NextRequest) { const guildUrlName = request.nextUrl.pathname.split("/")[1] - const redirects = await get("redirects") - - const redirectUrl = - redirects && - typeof redirects === "object" && - !Array.isArray(redirects) && - guildUrlName in redirects - ? redirects[guildUrlName] - : undefined - - if (redirectUrl) { - const parsedUrl = z.string().url().safeParse(redirectUrl) - if (parsedUrl.success) { - return NextResponse.redirect(parsedUrl.data) - } + const _redirects = await get("redirects") + + const redirects = z + .object({ + sameURL: z.array(z.string()), + mapURL: z.array(z.tuple([z.string(), z.string()])), + }) + .parse(_redirects) + + const sameRedirect = redirects.sameURL.find((urlName) => urlName === guildUrlName) + + if (sameRedirect) { + return NextResponse.redirect(`https://era.guild.xyz/${sameRedirect}`) + } + + const mappedRedirect = redirects.mapURL.find( + ([oldUrlName]) => oldUrlName === guildUrlName + ) + + if (mappedRedirect) { + return NextResponse.redirect(`https://era.guild.xyz/${mappedRedirect[1]}`) } return NextResponse.next()