import { Inject, Injectable, Logger } from '@nestjs/common'
import { app, messaging } from 'firebase-admin'
import { FIREBASE_APP } from './tokens'

@Injectable()
export class FirebaseMessagingService {
	private readonly logger = new Logger(FirebaseMessagingService.name)
	private readonly messageClient: messaging.Messaging

	constructor(@Inject(FIREBASE_APP) private readonly _firebaseApp: app.App) {
		this.messageClient = this._firebaseApp.messaging()
	}

	async send(payload: messaging.TokenMessage): Promise<void> {
		return this.messageClient
			.send(payload)
			.then((res) => {
				this.logger.verbose(`Notification delivered: ${res}`)
			})
			.catch((error) => {
				this.logger.error(error.message)
			})
	}
}
