60 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // License: LGPL-3.0-or-later
 | |
| const h = require('snabbdom/h')
 | |
| const R = require('ramda')
 | |
| const flyd = require('flyd')
 | |
| const request = require('../../../common/request')
 | |
| const flyd_lift = require('flyd/module/lift')
 | |
| const colors = require('../../../common/colors')
 | |
| 
 | |
| function init() {
 | |
|   var state = {
 | |
|     clickSync$: flyd.stream()
 | |
|   , mailchimpKeyResp$: request({method: 'get', path: `/nonprofits/${app.nonprofit_id}/nonprofit_keys`, query: {select: 'mailchimp_token'}}).load
 | |
|   }
 | |
|   state.mailchimpKey$ = flyd.map(R.prop('response'), flyd.filter(resp => resp.status === 200, state.mailchimpKeyResp$))
 | |
|   return state
 | |
| }
 | |
| 
 | |
| 
 | |
| function view(state) {
 | |
|   return h('section.integrations.settings-pane.nonprofit-settings', {
 | |
|     style: {display: 'none'}
 | |
|   }, [
 | |
|     h('header.pane-header', [h('h3', 'Integrations')])
 | |
|   , h('p', 'Connect your CommitChange account with other apps to take advantage of integration features.')
 | |
|   , integrationSection(state, state.mailchimpKey$(), 'MailChimp', mailchimpConnectedMessage, mailchimpNotConnectedMessage)
 | |
|   , h('br')
 | |
|   ])
 | |
| }
 | |
| 
 | |
| // A section fo each integration; pass in the API key for the integration, the
 | |
| // name, and two functions for bodies: the first body function for when the API
 | |
| // key is defined, the second body function for when the API key is undefined
 | |
| const integrationSection = (state, key, name, bodyConnected, bodyNotConnected) => {
 | |
|   return h('div.pane-inner.integrations', [
 | |
|     h('h6', {
 | |
|       style: {color: key ? colors['$bluegrass'] : colors['$grey']}
 | |
|     }, [
 | |
|       key ? h('i.fa.fa-check') : h('i.fa.fa-question-circle')
 | |
|     , ' ' + name
 | |
|     ])
 | |
|   , key ? bodyConnected(state) : bodyNotConnected(state)
 | |
|   ])
 | |
| }
 | |
| 
 | |
| const mailchimpNotConnectedMessage = state => {
 | |
|   return h('p', [
 | |
|     'Connect with MailChimp to automatically sync supporter emails to your MailChimp Email Lists.'
 | |
|   , h('br')
 | |
|   , h('a', {props: {href: `/nonprofits/${app.nonprofit_id}/nonprofit_keys/mailchimp_login`}}, 'Click here to connect your Mailchimp account.')
 | |
|   ])
 | |
| }
 | |
| const mailchimpConnectedMessage = state => {
 | |
|   return h('p', [
 | |
|     'Congrats! You Mailchimp account has been connected successfully.'
 | |
|   , h('br')
 | |
|   , h('a', {props: {href: `/nonprofits/${app.nonprofit_id}/supporters?show-modal=mailchimpSettingsModal`}}, 'Click here to manage your email list sync settings.')
 | |
|   ])
 | |
| }
 | |
| 
 | |
| module.exports = {view, init}
 | 
