Skip to content

Commit a2df666

Browse files
authored
Merge pull request #773 from hackclub/parallel-cookie-loading
Parallel cookie loading
2 parents c5d0974 + a236179 commit a2df666

File tree

1 file changed

+46
-20
lines changed

1 file changed

+46
-20
lines changed

src/middleware.ts

+46-20
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,19 @@
11
import { NextResponse } from 'next/server'
22
import type { NextRequest } from 'next/server'
33
import { get } from '@vercel/edge-config'
4-
import { getSession } from './app/utils/auth'
4+
import { getSession, HsSession } from './app/utils/auth'
55
import {
66
fetchShips,
77
fetchSignpostFeed,
88
fetchWaka,
99
person,
1010
} from './app/utils/data'
1111

12-
export async function userPageMiddleware(request: NextRequest) {
13-
const response = NextResponse.next()
14-
const session = await getSession()
15-
const banlist = (await get('banlist')) as string[]
16-
17-
const email = session?.email
18-
const slackId = session?.slackId
19-
if (!slackId || !email) return response
20-
21-
if (banlist.includes(email)) {
22-
const redir = NextResponse.redirect(new URL('/', request.url))
23-
request.cookies
24-
.getAll()
25-
.forEach((cookie) => redir.cookies.delete(cookie.name))
26-
27-
console.log('Banned', email)
28-
return redir
29-
}
30-
12+
async function loadShipsCookie(
13+
request: NextRequest,
14+
slackId: string,
15+
response: NextResponse,
16+
) {
3117
// Ships base
3218
try {
3319
const shipyardPage = request.nextUrl.pathname.startsWith('/shipyard')
@@ -44,7 +30,13 @@ export async function userPageMiddleware(request: NextRequest) {
4430
} catch (e) {
4531
console.log('Middleware errored on ships cookie step', e)
4632
}
33+
}
4734

35+
async function loadWakaCookie(
36+
request: NextRequest,
37+
session: HsSession,
38+
response: NextResponse,
39+
) {
4840
try {
4941
console.log('Checking for waka cookie')
5042
if (!request.cookies.get('waka')) {
@@ -64,7 +56,12 @@ export async function userPageMiddleware(request: NextRequest) {
6456
} catch (e) {
6557
console.log('Middleware errored on waka cookie step', e)
6658
}
59+
}
6760

61+
async function loadSignpostFeedCookie(
62+
request: NextRequest,
63+
response: NextResponse,
64+
) {
6865
// Signpost base
6966
try {
7067
console.log('Checking for signpost-feed cookie')
@@ -82,7 +79,9 @@ export async function userPageMiddleware(request: NextRequest) {
8279
} catch (e) {
8380
console.log('Middleware errored on signpost-feed cookie step', e)
8481
}
82+
}
8583

84+
async function loadPersonCookies(request: NextRequest, response: NextResponse) {
8685
// Person base
8786
try {
8887
if (
@@ -133,6 +132,33 @@ export async function userPageMiddleware(request: NextRequest) {
133132
} catch (e) {
134133
console.log('Middleware errored on person cookie step', e)
135134
}
135+
}
136+
137+
export async function userPageMiddleware(request: NextRequest) {
138+
const response = NextResponse.next()
139+
const session = await getSession()
140+
const banlist = (await get('banlist')) as string[]
141+
142+
const email = session?.email
143+
const slackId = session?.slackId
144+
if (!slackId || !email) return response
145+
146+
if (banlist.includes(email)) {
147+
const redir = NextResponse.redirect(new URL('/', request.url))
148+
request.cookies
149+
.getAll()
150+
.forEach((cookie) => redir.cookies.delete(cookie.name))
151+
152+
console.log('Banned', email)
153+
return redir
154+
}
155+
156+
await Promise.all([
157+
loadShipsCookie(request, slackId, response),
158+
loadWakaCookie(request, session, response),
159+
loadSignpostFeedCookie(request, response),
160+
loadPersonCookies(request, response),
161+
])
136162

137163
return response
138164
}

0 commit comments

Comments
 (0)