Skip to content

Commit

Permalink
wired up subscribed to mailing list logic
Browse files Browse the repository at this point in the history
  • Loading branch information
dwilt committed May 29, 2018
1 parent d5b778f commit 2df95f2
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 12 deletions.
18 changes: 11 additions & 7 deletions firebaseFunctions/firestore.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,18 @@ async function sendSlackMessage({ name, email }) {
}

export async function submitQuiz(result) {
const { name, email, rating } = result;

await Promise.all([
const { subscribedToMailingList, ...rest } = result;
const actions = [
admin
.firestore()
.collection(`results`)
.add(result),
subscribeToMailchimp({ name, email, rating }),
sendSlackMessage({ name, email })
]);
.add(rest)
];

if (subscribedToMailingList) {
actions.push(subscribeToMailchimp(rest), sendSlackMessage(rest));
}

await Promise.all(actions);
}
2 changes: 1 addition & 1 deletion firebaseFunctions/services/mailchimp.service.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ async function addUserToLists(firstName, email, lists = []) {
// );

await Promise.all(
lists.map(list => {
lists.map((list) => {
return axios({
method: "post",
url: `https://us17.api.mailchimp.com/3.0/lists/${list}/members`,
Expand Down
10 changes: 6 additions & 4 deletions src/selectors/quiz.selectors.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,7 @@ export const quizAnswersSelector = createSelector(
(quiz) => quiz.answers
);

export const quizNameSelector = createSelector(
quizSelector,
(quiz) => quiz.name
);
export const quizNameSelector = createSelector(quizSelector, (quiz) => quiz.name);

export const quizEmailSelector = createSelector(
quizSelector,
Expand All @@ -46,6 +43,11 @@ export const quizQuestionIdSelector = createSelector(
(answers) => questions[answers.length].id
);

export const subscribedToMailingListSelector = createSelector(
[quizSelector],
(quiz) => quiz.subscribedToMailingList
);

export const quizScoreSelector = createSelector(
[quizAnswersSelector],
(answers) => {
Expand Down
11 changes: 11 additions & 0 deletions src/store/quiz/quiz.actions.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import {
quizSelectedAnswerSelector,
quizQuestionIdSelector,
quizScoreSelector,
subscribedToMailingListSelector
} from "src/selectors";

import { fireFetch } from "src/services/firebase.service";
Expand Down Expand Up @@ -50,6 +51,14 @@ export const addAnswerAction = (answer) => ({
},
});

export const subscribeToMailingListAction = () => ({
type: `SUBSCRIBE_TO_MAILING_LIST`,
});

export const unsubscribeToMailingListAction = () => ({
type: `UNSUBSCRIBE_TO_MAILING_LIST`,
});

export const submitAnswerAction = () => ({
type: `SUBMIT_SELECTED_ANSWER`,
});
Expand Down Expand Up @@ -83,6 +92,7 @@ function* submitQuiz() {
const name = yield select(quizNameSelector);
const email = yield select(quizEmailSelector);
const score = yield select(quizScoreSelector);
const subscribedToMailingList = yield select(subscribedToMailingListSelector);

const rating = getRating(score);
const timestamp = new Date().toISOString();
Expand All @@ -95,6 +105,7 @@ function* submitQuiz() {
timestamp,
version,
score,
subscribedToMailingList,
});
}

Expand Down
11 changes: 11 additions & 0 deletions src/store/quiz/quiz.reducer.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ import {
addAnswerAction,
setNameAction,
setEmailAction,
subscribeToMailingListAction,
unsubscribeToMailingListAction,
} from "./quiz.actions";

import { createReducer } from "src/helpers";
Expand All @@ -15,6 +17,7 @@ export default createReducer(
answers: [],
email: ``,
name: ``,
subscribedToMailingList: false,
},
{
[setStateAction().type]: (st, { state }) => ({
Expand All @@ -37,5 +40,13 @@ export default createReducer(
...st,
email,
}),
[subscribeToMailingListAction().type]: (st) => ({
...st,
subscribedToMailingList: true,
}),
[unsubscribeToMailingListAction().type]: (st) => ({
...st,
subscribedToMailingList: false,
}),
}
);

0 comments on commit 2df95f2

Please sign in to comment.