/var/www/qr4y.kz/server/delivery/services/firebase
NameSizeModeActions
index.js28240644editdlrm
service-account-file.example.json2320644editdlrm
service-account-file.json23310644editdlrm
Edit: /var/www/qr4y.kz/server/delivery/services/firebase/index.js (2824B)
const admin = require('firebase-admin') const logger = require('../../logger')({ service: 'Firebase' }) const serviceAccount = require('./service-account-file.json') const { isSet } = require('../../api/utils/validator.util') class Firebase { constructor({ config, db }) { this.config = config // if (!config.firebase.enabled) { logger.child({ service: 'Firebase', method: 'constructor' }).info(`initializeApp`) // return // } this.db = db this.a = admin.initializeApp({ credential: admin.credential.cert(serviceAccount), databaseURL: config.firebaseDbURL }) } async SendToDevice(registrationToken, message, options) { // if (!this.config.firebase.enabled) { // logger // .child({ service: 'Firebase', method: 'sendToUser' }) // .info(`Firebase disabled!`) // return // } if (!isSet(options)) { options = {} } logger .child({ service: 'Firebase', method: 'sendToDevice' }) .info(`Token: ` + registrationToken + ' message: ' + message) return await this.a.messaging().sendToDevice(registrationToken, message, options) } async SendToUser(id, message, options) { const _db = this.db if (!isSet(options)) { options = {} } if (!id) { logger.child({ service: 'Firebase', method: 'sendToUser' }).info(`Id is required`) return } const user = await _db.user.findOne({ include: [{ model: _db.userGoogleToken }], where: { id } }) if (!user) { logger.child({ service: 'Firebase', method: 'sendToUser' }).info(`User not found!`) return } let tasks = [] for (const { token } of user.userGoogleTokens) { message['token'] = token tasks.push( admin .messaging() .send(message) .then((response) => { // Response is a message ID string. logger .child({ service: 'Firebase', method: 'sendToUser' }) .info('Successfully sent message:' + response) // console.log('Successfully sent message:', response); }) .catch((error) => { logger .child({ service: 'Firebase', method: 'sendToUser' }) .info('Error sending message:' + error) // console.log('Error sending message:', error); _db.userGoogleToken.destroy({ where: { token } }) }) ) } return await Promise.all(tasks) } } module.exports = Firebase // module.exports = function firebase({ config }) { // const admin = require('firebase-admin') // const serviceAccount = require('./service-account-file.json') // admin.initializeApp({ // credential: admin.credential.cert(serviceAccount), // databaseURL: config.firebaseDbURL // }) // this.sendToDevice = async (registrationToken, message, options) => { // if (!isSet(options)) { // options = {} // } // return admin.messaging().sendToDevice(registrationToken, message, options) // } // return this // }