105 lines
3.1 KiB
JavaScript
105 lines
3.1 KiB
JavaScript
const path = require("path");
|
|
require("dotenv").config({
|
|
path: path.resolve(process.cwd(), `.env.${process.env.NODE_ENV || "development"}`)
|
|
});
|
|
|
|
const client = require("../graphql-client/graphql-client").client;
|
|
const queries = require("../graphql-client/queries");
|
|
const { phone } = require("phone");
|
|
const logger = require("../utils/logger");
|
|
const { admin } = require("../firebase/firebase-handler");
|
|
|
|
exports.status = (req, res) => {
|
|
const { SmsSid, SmsStatus } = req.body;
|
|
const {
|
|
ioRedis,
|
|
ioHelpers: { getBodyshopRoom, getBodyshopConversationRoom }
|
|
} = req;
|
|
client
|
|
.request(queries.UPDATE_MESSAGE_STATUS, {
|
|
msid: SmsSid,
|
|
fields: { status: SmsStatus }
|
|
})
|
|
.then((response) => {
|
|
logger.log("sms-status-update", "DEBUG", "api", null, {
|
|
msid: SmsSid,
|
|
fields: { status: SmsStatus }
|
|
});
|
|
// TODO Verify
|
|
const message = response.update_messages.returning[0];
|
|
|
|
const conversationRoom = getBodyshopConversationRoom({
|
|
bodyshopId: message.conversation.bodyshopid,
|
|
conversationId: message.conversationid
|
|
});
|
|
|
|
ioRedis.to(conversationRoom).emit("message-changed", {
|
|
message
|
|
});
|
|
})
|
|
.catch((error) => {
|
|
logger.log("sms-status-update-error", "ERROR", "api", null, {
|
|
msid: SmsSid,
|
|
fields: { status: SmsStatus },
|
|
error
|
|
});
|
|
});
|
|
res.sendStatus(200);
|
|
};
|
|
|
|
exports.markConversationRead = async (req, res) => {
|
|
const { conversationid, imexshopid } = req.body;
|
|
const {
|
|
ioRedis,
|
|
ioHelpers: { getBodyshopRoom, getBodyshopConversationRoom }
|
|
} = req;
|
|
|
|
//Server side, mark the conversation as read
|
|
|
|
//TODO: Convert this to run on server side. Stolen from chat-conversation.container.jsx
|
|
// const [markConversationRead] = useMutation(MARK_MESSAGES_AS_READ_BY_CONVERSATION, {
|
|
// variables: { conversationId: selectedConversation },
|
|
// refetchQueries: ["UNREAD_CONVERSATION_COUNT"],
|
|
//
|
|
// update(cache) {
|
|
// cache.modify({
|
|
// id: cache.identify({
|
|
// __typename: "conversations",
|
|
// id: selectedConversation
|
|
// }),
|
|
// fields: {
|
|
// messages_aggregate(cached) {
|
|
// return { aggregate: { count: 0 } };
|
|
// }
|
|
// }
|
|
// });
|
|
// }
|
|
// });
|
|
|
|
const broadcastRoom = getBodyshopRoom(r2.insert_messages.returning[0].conversation.bodyshop.id);
|
|
|
|
ioRedis.to(broadcastRoom).emit("conversation-changed", {
|
|
//type: "conversation-marked-unread" //TODO: Flush out what this looks like.
|
|
// isoutbound: true,
|
|
// conversationId: conversationid,
|
|
// updated_at: r2.insert_messages.returning[0].updated_at,
|
|
// msid: message.sid,
|
|
// summary: true
|
|
});
|
|
|
|
res.send(200);
|
|
};
|
|
|
|
// Inbound Sample
|
|
// {
|
|
// "SmsSid": "SM5205ea340e06437799d9345e7283457c",
|
|
// "SmsStatus": "queued",
|
|
// "MessageStatus": "queued",
|
|
// "To": "+16049992002",
|
|
// "MessagingServiceSid": "MG6e259e2add04ffa0d0aa355038670ee1",
|
|
// "MessageSid": "SM5205ea340e06437799d9345e7283457c",
|
|
// "AccountSid": "AC6c09d337d6b9c68ab6488c2052bd457c",
|
|
// "From": "+16043301606",
|
|
// "ApiVersion": "2010-04-01"
|
|
// }
|