Edit File: fcm.js
'user strict'; /** * fcm helper functions */ const path = require('path'), DB = require('./db'), i18n_module = require('i18n-nodejs'), fs = require('fs'), axios = require('axios'), {getAccessToken} = require('./fcm_config/config'), {COLLAPSE_KEY,FCMURL} = require('./constVariables'), config = { "lang" : '', "langFile" : "../../locale.json" }, i18n_ar = new i18n_module(config.lang = "ar", config.langFile), i18n_en = new i18n_module(config.lang = "en", config.langFile); class FCM_HELPER { async send(data) { console.log("sendNotification") //send fcm notification let sendername = data.sender_name; let message_ar = ''; let message_en = ''; let message = {}; let accessToken = await getAccessToken(); DB.query(`SELECT * FROM devices WHERE morph_id = ${data.receiver_id} AND morph_type LIKE '%${data.morph_type}%'`).then((results, error) => { results.forEach((row,index) => { if(data.type == 'text') { message_ar = data.body; message_en = data.body; }else{ message_ar = i18n_ar.__(data.type); message_en = i18n_en.__(data.type); } if(row.device_type == 'ios'){ message = { token : row.device_id, // collapse_key : COLLAPSE_KEY, notification : { title : sendername, body : message_ar, }, "android": { "notification": { "sound": "default" } }, "apns": { "payload": { "aps": { "sound": "default" } } }, data: { title : sendername, body_ar : message_ar, body_en : message_en, message_ar : message_ar, message_en : message_en, room_id : String(data.room_id), sender_id : String(data.receiver_id), receiver_id : String(data.sender_id), msg_type : data.type, sender_name : data.sender_name, avatar : data.avatar, type : 'new_message' } }; }else if(row.device_type == 'web'){ message = { token : row.device_id, // collapse_key : COLLAPSE_KEY, notification : { title : sendername, body : message_ar, }, data : { title : sendername, body_ar : message_ar, body_en : message_en, message_ar : message_ar, message_en : message_en, room_id : String(data.room_id), sender_id : String(data.receiver_id), receiver_id : String(data.sender_id), msg_type : data.type, sender_name : data.sender_name, avatar : data.avatar, type : 'new_message' } }; }else{ message = { token : row.device_id, // collapse_key : COLLAPSE_KEY, notification : null, data : { title : sendername, body_ar : message_ar, body_en : message_en, message_ar : message_ar, message_en : message_en, room_id : String(data.room_id), sender_id : String(data.receiver_id), receiver_id : String(data.sender_id), msg_type : data.type, sender_name : data.sender_name, avatar : data.avatar, type : 'new_message' } }; } let msg_fcm = {"message":message} axios.post(FCMURL, msg_fcm, { headers: { 'Authorization': `Bearer ${accessToken}`, 'Content-Type': 'application/json' } }) .then(response => { console.log('Message sent successfully:'); }) .catch(error => { console.log(error.response.data) console.log(error.response.data.details) console.error('Error sending message:'); }); }); }); //end send fcm } } module.exports = new FCM_HELPER();
Back to File Manager