// License: LGPL-3.0-or-later const R = require('ramda') const format = require('../common/format') var format_err = require('../common/format_response_error') var request = require('../common/super-agent-promise') appl.def('ajax_refunds', { create: function(charge_id, form_obj, node) { form_obj = formatter(form_obj) appl.def({ loading: true, refunds: { error: '', loading: true } }) post_refund(charge_id, form_obj) .then(function(resp) { not_loading() appl.close_modal() return resp }) .then(function(resp) { return resp.body }) .then(fetch_data_on_success) .then(display_success_message) .catch(show_err) } }) const formatter = R.evolve({ amount: format.dollarsToCents }) // Re-fetch all the payment data on the page after a refund has been made function fetch_data_on_success(refund) { appl.payments.index() appl.ajax_payment_details.fetch(appl.payment_details.data.id) return refund } // Display a nice message confirming the amounts of the refund they just made function display_success_message(refund) { appl.notify( "Your refund was successful!" ) return refund } // Reset the loading state in the ui function not_loading(x) { appl.def({loading: false, refunds: {loading: false}}) return x } // Display an error in the ui function show_err(resp) { not_loading() console.warn('Error in promise chain: ', resp) appl.def('refunds', { error: format_err(resp), loading: false }) } // Make the ajax request, returning a Promise function post_refund(charge_id, obj) { return request .post('/nonprofits/' + app.nonprofit_id + '/charges/' + charge_id + '/refunds') .send({refund: obj}) .perform() }