diff --git a/firebaseFunctions/firestore.js b/firebaseFunctions/firestore.js index 5cb2a33..082c3ee 100644 --- a/firebaseFunctions/firestore.js +++ b/firebaseFunctions/firestore.js @@ -10,9 +10,18 @@ import slack from "./services/slack.service"; admin.initializeApp(functions.config().firebase); -async function subscribeToMailchimp({ name, email, rating }) { +async function subscribeToMailchimp({ + name, + email, + rating, + subscribedToMailingList +}) { const lists = [mailchimp.mailingLists.javascriptQuizRespondants]; + if (subscribedToMailingList) { + lists.push(mailchimp.mailingLists.danWiltCoachingUpdates); + } + if (rating === ratings.EXPERT) { lists.push(mailchimp.mailingLists.mobileDevReady); } else if (rating === ratings.PROFICIENT) { @@ -24,23 +33,23 @@ async function subscribeToMailchimp({ name, email, rating }) { await mailchimp.addUserToLists(name, email, lists); } -async function sendSlackMessage({ name, email }) { - await slack.sendMessage(`New quiz submission from ${name}: ${email}`); +async function sendSlackMessage({ name, email, subscribedToMailingList }) { + const subscribedSentence = subscribedToMailingList + ? "They subscribed for periodic mailing updates! 🙌" + : `They didn't subscribe for periodic mailing updates. 😞`; + + await slack.sendMessage( + `${name} (${email}) just took the quiz! ${subscribedSentence}` + ); } export async function submitQuiz(result) { - const { subscribedToMailingList, ...rest } = result; - - const actions = [ + await Promise.all([ admin .firestore() .collection(`results`) - .add(rest) - ]; - - if (subscribedToMailingList) { - actions.push(subscribeToMailchimp(rest), sendSlackMessage(rest)); - } - - await Promise.all(actions); + .add(result), + subscribeToMailchimp(result), + sendSlackMessage(result) + ]); } diff --git a/firebaseFunctions/services/slack.service.js b/firebaseFunctions/services/slack.service.js index 405f76b..a4709bf 100644 --- a/firebaseFunctions/services/slack.service.js +++ b/firebaseFunctions/services/slack.service.js @@ -3,9 +3,14 @@ import axios from "axios"; import { SLACK_URL } from "../keys"; async function sendMessage(text) { - return axios.post(SLACK_URL, { - text - }); + try { + await axios.post(SLACK_URL, { + text + }); + } catch (e) { + console.log("failed to send slack message"); + console.log("error: ", e); + } } export default {