36 lines
		
	
	
	
		
			1,016 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
	
		
			1,016 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| // License: LGPL-3.0-or-later
 | |
| const flyd = require('flyd')
 | |
| const R = require('ramda')
 | |
| const flatMap = require('flyd/module/flatmap')
 | |
| const request = require('../../common/request')
 | |
| const serialize = require('form-serialize')
 | |
| require('../../components/address-autocomplete')
 | |
| 
 | |
| const submit$ = flyd.stream()
 | |
| document.querySelector('.js-submit')
 | |
|   .addEventListener('submit', ev => {
 | |
|     ev.preventDefault()
 | |
|     submit$(ev)
 | |
|   })
 | |
| 
 | |
| flyd.map(()=> appl.def('loading', true), submit$)
 | |
| 
 | |
| const postRequest = ev => {
 | |
|   return request({
 | |
|     method: "POST"
 | |
|   , path: `/nonprofits/${app.nonprofit_id}/custom_supporter`
 | |
|   , send: {supporter: serialize(ev.currentTarget, {hash: true})}
 | |
|   }).load
 | |
| }
 | |
| 
 | |
| const getReqBody = flyd.map(R.prop('body'))
 | |
| 
 | |
| const response$ = getReqBody(flatMap(postRequest, submit$))
 | |
| 
 | |
| flyd.map(()=> {
 | |
|   document.querySelector('.finishedMessage').className = 'finishedMessage'
 | |
|   document.querySelector('.js-submit').className = 'js-submit hide'
 | |
| }, response$)
 | |
| 
 | |
| flyd.map(()=> appl.def('loading', false), response$)
 | |
| 
 | 
