const {admin} = require('./../fireBaseConfig') // var objNotif = { // title:"", // body:"" // } // const payload = { // notification: objNotif, // data: { // routeName: result.id, // type: "bazaar", // routeType: "viewBazaar", // }, // }; module.exports.notification = { sendBatch : async (inputs) => { const {data, payload} = inputs; try { // set variables const failedTokens = []; // Set message body const obj = { android: { notification: { sound: 'default', default_sound: true, default_vibrate_timings: true, }, }, apns: { payload: { aps: { badge: 12, sound: 'default', }, }, }, data: payload.data, notification: {}, token: {}, }; // Set ttl if exists if (payload?.android?.ttl) obj.android.ttl = payload.ttl; // complete messages body const messages = []; data.map((item) => { const newData = JSON.parse(JSON.stringify(obj)); newData.notification.title = item.title; newData.notification.body = item.body; newData.token = item.token; messages.push(newData); }); // run fcm const response = await admin.messaging().sendAll(messages); // operate on result if (response.failureCount > 0) { response?.responses.forEach((resp, idx) => { if (!resp.success) { failedTokens.push({ message: resp.error.message, cid: data[idx].cid, }); } }); } return ; } catch (e) { console.log(e.message); return exits.error(e.message); } }, sendMulti : async (inputs) => { const {registrationTokens, payload} = inputs; try { // Set message main body const message = { android: { notification: { sound: 'default', default_sound: true, default_vibrate_timings: true, }, }, apns: { payload: { aps: { badge: 12, sound: 'default', }, }, }, notification: payload.notification, data: payload.data, tokens: registrationTokens, }; // Run fcm const response = await admin.messaging().sendMulticast(message); // get some data from response // result.failureCount = response.failureCount; // result.successCount = response.successCount; // if there was any failer in sending messsage // if (response.failureCount > 0) { // response.responses.forEach((resp, idx) => { // if (!resp.success) { // failedTokens.push({ // token: registrationTokens[idx], // message: resp.error.message, // cid: cid[idx], // }); // } // }); // } // result.failedTokens = failedTokens; // send response return true; } catch (e) { console.log(e.message); return false; } }, sendSingle : async (inputs) => { const {registrationTokens, payload} = inputs; try { // Set message main body var message = { android: { notification: { sound: 'default', default_sound: true, default_vibrate_timings: true, }, }, apns: { payload: { aps: { badge: 12, sound: 'default', }, }, }, webpush:{ headers:{ TTL:"86400" } }, notification: payload.notification, data: payload.data, token: registrationTokens, // priority: "high", // timeToLive: 60 * 60 * 24 }; // Check if there is any ttl in payload if (payload?.android?.ttl) message.android.ttl = payload.ttl; // Run fcm const response = await admin.messaging().send(message); // Check response if (!response) return false; return true; } catch (e) { console.log(e.message); return false; } } }