diff options
Diffstat (limited to 'src/routes/api/notifications/unsubscribe/+server.ts')
| -rw-r--r-- | src/routes/api/notifications/unsubscribe/+server.ts | 33 |
1 files changed, 15 insertions, 18 deletions
diff --git a/src/routes/api/notifications/unsubscribe/+server.ts b/src/routes/api/notifications/unsubscribe/+server.ts index ded228f3..94bbd497 100644 --- a/src/routes/api/notifications/unsubscribe/+server.ts +++ b/src/routes/api/notifications/unsubscribe/+server.ts @@ -1,27 +1,24 @@ -import { userIdentity } from '$lib/Data/AniList/identity'; -import { deleteUserSubscription } from '$lib/Database/SB/User/notifications'; +import { safeUserIdentity } from "$lib/Data/AniList/identity"; +import { deleteUserSubscription } from "$lib/Database/SB/User/notifications"; +import { decodeAuthCookieOrNull } from "$lib/Effect/authCookie"; -const unauthorised = new Response('Unauthorised', { status: 401 }); +const unauthorised = new Response("Unauthorised", { status: 401 }); export const POST = async ({ cookies, url }) => { - const userCookie = cookies.get('user'); - const fingerprint = url.searchParams.get('p'); + const userCookie = cookies.get("user"); + const fingerprint = url.searchParams.get("p"); - if (!userCookie || !fingerprint) return unauthorised; + if (!userCookie || !fingerprint) return unauthorised; - const user = JSON.parse(userCookie); - const userId = ( - await userIdentity({ - tokenType: user['token_type'], - expiresIn: user['expires_in'], - accessToken: user['access_token'], - refreshToken: user['refresh_token'] - }) - ).id; + const user = decodeAuthCookieOrNull(userCookie); - if (!userId) return unauthorised; + if (!user) return unauthorised; - await deleteUserSubscription(userId, fingerprint); + const userId = (await safeUserIdentity(user))?.id; - return new Response(null, { status: 200 }); + if (!userId) return unauthorised; + + await deleteUserSubscription(userId, fingerprint); + + return new Response(null, { status: 200 }); }; |