Skip to content

Instantly share code, notes, and snippets.

@marr
Last active March 9, 2016 21:21
Show Gist options
  • Save marr/71cd0adff586aa1d3bea to your computer and use it in GitHub Desktop.
Save marr/71cd0adff586aa1d3bea to your computer and use it in GitHub Desktop.
export const LOAD_EMAIL_PREFERENCES = 'LOAD_EMAIL_PREFERENCES'
export const LOADED_EMAIL_PREFERENCES = 'LOADED_EMAIL_PREFERENCES'
export function loadEmailPreferences (personId) {
return async (dispatch, getState) => {
const account = getState().guests[personId].account
const centres = account.newsletter_centre_ids
if (centres.length) {
dispatch({ type: LOAD_EMAIL_PREFERENCES })
const newslettersByCentre = await Promise.all(centres.map(getNewslettersByCentre))
const subscriptions = account.newsletter_subscriptions
const newsletters = Array.prototype.concat.apply([], newslettersByCentre)
.filter(newsletter => subscriptions.includes(newsletter.newsletter_id))
dispatch({ type: LOADED_EMAIL_PREFERENCES, payload: { newsletters } })
}
}
}
async function getNewslettersByCentre (centre_id) {
const newslettersEndpoint = NEWSLETTERS_ENDPOINT.clone()
newslettersEndpoint.addQuery('centre_id', centre_id)
const newslettersResponse = await looseFetch(newslettersEndpoint)
return Array.prototype.concat.apply([], newslettersResponse.data.map(o => o.newsletters))
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment