diff options
| author | Fuwn <[email protected]> | 2024-07-24 21:24:09 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-07-24 21:24:09 -0700 |
| commit | 8a94bbfba322f8011017980e4362d46c4d51bb55 (patch) | |
| tree | 4d861cd7f1d9304e6297e1b52fe759674fd5df1a /src/routes/api/notifications/subscribe/+server.ts | |
| parent | feat(layout): browser notifications (diff) | |
| download | due.moe-8a94bbfba322f8011017980e4362d46c4d51bb55.tar.xz due.moe-8a94bbfba322f8011017980e4362d46c4d51bb55.zip | |
feat: background notifications
Diffstat (limited to 'src/routes/api/notifications/subscribe/+server.ts')
| -rw-r--r-- | src/routes/api/notifications/subscribe/+server.ts | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/routes/api/notifications/subscribe/+server.ts b/src/routes/api/notifications/subscribe/+server.ts new file mode 100644 index 00000000..98bd5c4d --- /dev/null +++ b/src/routes/api/notifications/subscribe/+server.ts @@ -0,0 +1,26 @@ +import { userIdentity } from '$lib/Data/AniList/identity'; +import { setUserSubscription } from '$lib/Database/userNotifications'; + +const unauthorised = new Response('Unauthorised', { status: 401 }); + +export const POST = async ({ cookies, request }) => { + const userCookie = cookies.get('user'); + + if (!userCookie) 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; + + if (!userId) return unauthorised; + + await setUserSubscription(userId, await request.json()); + + return new Response(null, { status: 200 }); +}; |