37 lines
		
	
	
	
		
			1,016 B
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			37 lines
		
	
	
	
		
			1,016 B
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | // 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$) | ||
|  | 
 |