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/trigger | |
| 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/trigger')
| -rw-r--r-- | src/trigger/notifications.ts | 38 |
1 files changed, 38 insertions, 0 deletions
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 {}; + } +}); |