Added notification generation on SMS. Added FCM Token saving on login.

This commit is contained in:
Patrick Fic
2020-05-01 12:32:40 -07:00
parent 92aeb419a9
commit 636e979fd0
21 changed files with 3810 additions and 45 deletions

View File

@@ -2,9 +2,11 @@ require("dotenv").config();
const client = require("../graphql-client/graphql-client").client;
const queries = require("../graphql-client/queries");
const phone = require("phone");
const admin = require("../firebase/firebase-handler").admin;
exports.receive = (req, res) => {
//Perform request validation
console.log("Twilio Receive Inbound");
if (
!!!req.body ||
!!!req.body.MessagingServiceSid ||
@@ -16,9 +18,9 @@ exports.receive = (req, res) => {
client
.request(queries.FIND_BODYSHOP_BY_MESSAGING_SERVICE_SID, {
mssid: req.body.MessagingServiceSid,
phone: phone(req.body.From)[0]
phone: phone(req.body.From)[0],
})
.then(response => {
.then((response) => {
//TODO Add logic for handling MMS.
let newMessage = { msid: req.body.SmsMessageSid, text: req.body.Body };
if (response.bodyshops[0]) {
@@ -29,8 +31,8 @@ exports.receive = (req, res) => {
newMessage.conversation = {
data: {
bodyshopid: response.bodyshops[0].id,
phone_num: phone(req.body.From)[0]
}
phone_num: phone(req.body.From)[0],
},
};
} else if (response.bodyshops[0].conversations.length === 1) {
//Just add it to the conversation
@@ -47,16 +49,52 @@ exports.receive = (req, res) => {
client
.request(queries.INSERT_MESSAGE, { msg: newMessage })
.then(r2 => {
.then((r2) => {
console.log("R2", JSON.stringify(r2));
const arrayOfAllUserFcmTokens = r2.insert_messages.returning[0].conversation.bodyshop.associations.map(
(a) => a.user.fcmtokens
);
const allTokens = [];
arrayOfAllUserFcmTokens.map((i) =>
Object.keys(i).map((k) => allTokens.push(k))
);
const uniqueTokens = [...new Set(allTokens)];
console.log("exports.receive -> uniqueTokens", uniqueTokens);
var message = {
notification: {
title: `New SMS From ${phone(req.body.From)[0]}`,
body: req.body.Body,
},
data: {
jobid: "1234",
},
tokens: uniqueTokens,
};
// Send a message to the device corresponding to the provided
// registration token.
admin
.messaging()
.sendMulticast(message)
.then((response) => {
// Response is a message ID string.
console.log("Successfully sent message:", response);
})
.catch((error) => {
console.log("Error sending message:", error);
});
res.status(200).end();
})
.catch(e2 => {
.catch((e2) => {
console.log("e2", e2);
res.status(500).json(e2);
});
}
})
.catch(e1 => {
.catch((e1) => {
console.log("e1", e1);
res.status(500).json(e1);
});