Add OneSignal configuration and service

This commit is contained in:
faris Aljohari
2024-05-26 00:35:20 +03:00
parent 167cb055c1
commit 8b88d2be95
2 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,9 @@
import { registerAs } from '@nestjs/config';
export default registerAs(
'onesignal-config',
(): Record<string, any> => ({
ONESIGNAL_APP_ID: process.env.ONESIGNAL_APP_ID,
ONESIGNAL_API_KEY: process.env.ONESIGNAL_API_KEY,
}),
);

View File

@ -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<string>('onesignal-config.ONESIGNAL_APP_ID'),
this.configService.get<string>('onesignal-config.ONESIGNAL_API_KEY'),
);
}
async sendNotification(
content: string,
title: string,
subscriptionIds: string[],
): Promise<any> {
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');
}
}
}