aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-07-24 21:49:26 -0700
committerFuwn <[email protected]>2024-07-24 23:24:13 -0700
commitfd8728fc728bdca7f745f562ebe4532b06f7d7b9 (patch)
treef3a58c93578829cf9a237f37ec348dfcfa4bf59b /src
parentfix(notifications): move details setter to run (diff)
downloaddue.moe-fd8728fc728bdca7f745f562ebe4532b06f7d7b9.tar.xz
due.moe-fd8728fc728bdca7f745f562ebe4532b06f7d7b9.zip
refactor(trigger): v2 -> v3
Diffstat (limited to 'src')
-rw-r--r--src/jobs/index.ts1
-rw-r--r--src/jobs/notifications.ts27
-rw-r--r--src/routes/api/trigger/+server.ts8
-rw-r--r--src/trigger.ts8
-rw-r--r--src/trigger/notifications.ts38
5 files changed, 38 insertions, 44 deletions
diff --git a/src/jobs/index.ts b/src/jobs/index.ts
deleted file mode 100644
index 9ea5ce77..00000000
--- a/src/jobs/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from './notifications';
diff --git a/src/jobs/notifications.ts b/src/jobs/notifications.ts
deleted file mode 100644
index 2cf62e76..00000000
--- a/src/jobs/notifications.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-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';
-
-client.defineJob({
- id: 'notifications',
- name: 'Notifications',
- version: '0.0.1',
- trigger: intervalTrigger({
- seconds: 20
- }),
- run: async () => {
- webpush.setVapidDetails(
- privateEnv.VAPID_SUBJECT,
- env.PUBLIC_VAPID_PUBLIC_KEY,
- privateEnv.VAPID_PRIVATE_KEY
- );
-
- for (const subscription of await getUserSubscriptions())
- await webpush.sendNotification(subscription['subscription'], '.');
-
- return {};
- }
-});
diff --git a/src/routes/api/trigger/+server.ts b/src/routes/api/trigger/+server.ts
deleted file mode 100644
index aff75d9c..00000000
--- a/src/routes/api/trigger/+server.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { createSvelteRoute } from '@trigger.dev/sveltekit';
-import { client } from '../../../trigger';
-
-import '../../../jobs';
-
-const svelteRoute = createSvelteRoute(client);
-
-export const POST = svelteRoute.POST;
diff --git a/src/trigger.ts b/src/trigger.ts
deleted file mode 100644
index 92bda66b..00000000
--- a/src/trigger.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { TriggerClient } from '@trigger.dev/sdk';
-import { TRIGGER_API_KEY, TRIGGER_API_URL, TRIGGER_ID } from '$env/static/private';
-
-export const client = new TriggerClient({
- id: TRIGGER_ID,
- apiKey: TRIGGER_API_KEY,
- apiUrl: TRIGGER_API_URL
-});
diff --git a/src/trigger/notifications.ts b/src/trigger/notifications.ts
new file mode 100644
index 00000000..a78f1f9b
--- /dev/null
+++ b/src/trigger/notifications.ts
@@ -0,0 +1,38 @@
+import { schedules, envvars } from '@trigger.dev/sdk/v3';
+import * as webpush from 'web-push';
+import { createClient } from '@supabase/supabase-js';
+
+export const notificationsTask = schedules.task({
+ id: 'notifications',
+ run: async (_payload: any, { ctx }) => {
+ const environment = ctx.environment.slug;
+ const triggerProjectReference = ctx.project.ref;
+ const getUserSubscriptions = async () => {
+ const { data, error } = await createClient(
+ (
+ await envvars.retrieve(triggerProjectReference, environment, 'SUPABASE_URL')
+ ).value,
+ (
+ await envvars.retrieve(triggerProjectReference, environment, 'SUPABASE_ANON_KEY')
+ ).value
+ )
+ .from('user_notifications')
+ .select('*');
+
+ if (error) return [];
+
+ return data;
+ };
+
+ webpush.setVapidDetails(
+ (await envvars.retrieve(triggerProjectReference, environment, 'VAPID_SUBJECT')).value,
+ (await envvars.retrieve(triggerProjectReference, environment, 'VAPID_PUBLIC_KEY')).value,
+ (await envvars.retrieve(triggerProjectReference, environment, 'VAPID_PRIVATE_KEY')).value
+ );
+
+ for (const subscription of await getUserSubscriptions())
+ await webpush.sendNotification(subscription['subscription'], '.');
+
+ return {};
+ }
+});