From 8b88d2be9530b9a65c990f15f4283de7e73e84ce Mon Sep 17 00:00:00 2001 From: faris Aljohari <83524184+farisaljohari@users.noreply.github.com> Date: Sun, 26 May 2024 00:35:20 +0300 Subject: [PATCH] Add OneSignal configuration and service --- libs/common/src/config/onesignal.config.ts | 9 ++++ .../src/helper/services/onesignal.service.ts | 41 +++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 libs/common/src/config/onesignal.config.ts create mode 100644 libs/common/src/helper/services/onesignal.service.ts diff --git a/libs/common/src/config/onesignal.config.ts b/libs/common/src/config/onesignal.config.ts new file mode 100644 index 0000000..5567fd1 --- /dev/null +++ b/libs/common/src/config/onesignal.config.ts @@ -0,0 +1,9 @@ +import { registerAs } from '@nestjs/config'; + +export default registerAs( + 'onesignal-config', + (): Record => ({ + ONESIGNAL_APP_ID: process.env.ONESIGNAL_APP_ID, + ONESIGNAL_API_KEY: process.env.ONESIGNAL_API_KEY, + }), +); diff --git a/libs/common/src/helper/services/onesignal.service.ts b/libs/common/src/helper/services/onesignal.service.ts new file mode 100644 index 0000000..1aa2c38 --- /dev/null +++ b/libs/common/src/helper/services/onesignal.service.ts @@ -0,0 +1,41 @@ +import { Injectable } from '@nestjs/common'; +import { ConfigService } from '@nestjs/config'; +import * as OneSignal from 'onesignal-node'; + +@Injectable() +export class OneSignalService { + private client: any; + + constructor(private readonly configService: ConfigService) { + // Initialize OneSignal client here + this.client = new OneSignal.Client( + this.configService.get('onesignal-config.ONESIGNAL_APP_ID'), + this.configService.get('onesignal-config.ONESIGNAL_API_KEY'), + ); + } + + async sendNotification( + content: string, + title: string, + subscriptionIds: string[], + ): Promise { + const notification = { + contents: { + en: content, + }, + headings: { + en: title, + }, + include_subscription_ids: subscriptionIds, + }; + + try { + const response = await this.client.createNotification(notification); + + return response; + } catch (err) { + console.error('Error:', err); + throw new Error('Error sending notification'); + } + } +}