aboutsummaryrefslogtreecommitdiff
path: root/src/routes/api/notifications/subscribe/+server.ts
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-07-24 21:24:09 -0700
committerFuwn <[email protected]>2024-07-24 21:24:09 -0700
commit8a94bbfba322f8011017980e4362d46c4d51bb55 (patch)
tree4d861cd7f1d9304e6297e1b52fe759674fd5df1a /src/routes/api/notifications/subscribe/+server.ts
parentfeat(layout): browser notifications (diff)
downloaddue.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.ts26
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 });
+};