diff options
| author | Fuwn <[email protected]> | 2024-07-24 21:49:26 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-07-24 23:24:13 -0700 |
| commit | fd8728fc728bdca7f745f562ebe4532b06f7d7b9 (patch) | |
| tree | f3a58c93578829cf9a237f37ec348dfcfa4bf59b /src | |
| parent | fix(notifications): move details setter to run (diff) | |
| download | due.moe-fd8728fc728bdca7f745f562ebe4532b06f7d7b9.tar.xz due.moe-fd8728fc728bdca7f745f562ebe4532b06f7d7b9.zip | |
refactor(trigger): v2 -> v3
Diffstat (limited to 'src')
| -rw-r--r-- | src/jobs/index.ts | 1 | ||||
| -rw-r--r-- | src/jobs/notifications.ts | 27 | ||||
| -rw-r--r-- | src/routes/api/trigger/+server.ts | 8 | ||||
| -rw-r--r-- | src/trigger.ts | 8 | ||||
| -rw-r--r-- | src/trigger/notifications.ts | 38 |
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 {}; + } +}); |