aboutsummaryrefslogtreecommitdiff
path: root/src/jobs/notifications.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/jobs/notifications.ts')
-rw-r--r--src/jobs/notifications.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/jobs/notifications.ts b/src/jobs/notifications.ts
new file mode 100644
index 00000000..3c29ecfc
--- /dev/null
+++ b/src/jobs/notifications.ts
@@ -0,0 +1,27 @@
+import { intervalTrigger } from '@trigger.dev/sdk';
+import { client } from '../trigger';
+import * as webpush from 'web-push';
+import { env as privateEnv } from '$env/dynamic/private';
+import { env } from '$env/dynamic/public';
+import { getUserSubscriptions } from '$lib/Database/userNotifications';
+
+webpush.setVapidDetails(
+ privateEnv.VAPID_SUBJECT,
+ env.PUBLIC_VAPID_PUBLIC_KEY,
+ privateEnv.VAPID_PRIVATE_KEY
+);
+
+client.defineJob({
+ id: 'notifications',
+ name: 'Notifications',
+ version: '0.0.1',
+ trigger: intervalTrigger({
+ seconds: 20
+ }),
+ run: async () => {
+ for (const subscription of await getUserSubscriptions())
+ await webpush.sendNotification(subscription['subscription'], '.');
+
+ return {};
+ }
+});