Refactor Patron code

merge-requests/93/head
Alex Gleason 4 years ago
parent 751261a173
commit 0dc085411c
No known key found for this signature in database
GPG Key ID: 7211D1F99744FBB7

@ -1,10 +1,12 @@
import api from '../api'; import api from '../api';
export const PATRON_FUNDING_IMPORT = 'PATRON_FUNDING_IMPORT'; export const PATRON_INSTANCE_FETCH_REQUEST = 'PATRON_INSTANCE_FETCH_REQUEST';
export const PATRON_FUNDING_FETCH_FAIL = 'PATRON_FUNDING_FETCH_FAIL'; export const PATRON_INSTANCE_FETCH_SUCCESS = 'PATRON_INSTANCE_FETCH_SUCCESS';
export const PATRON_INSTANCE_FETCH_FAIL = 'PATRON_INSTANCE_FETCH_FAIL';
export function fetchFunding() { export function fetchPatronInstance() {
return (dispatch, getState) => { return (dispatch, getState) => {
dispatch({ type: PATRON_INSTANCE_FETCH_REQUEST });
api(getState).get('/api/patron/v1/instance').then(response => { api(getState).get('/api/patron/v1/instance').then(response => {
dispatch(importFetchedFunding(response.data)); dispatch(importFetchedFunding(response.data));
}).catch(error => { }).catch(error => {
@ -13,16 +15,16 @@ export function fetchFunding() {
}; };
}; };
export function importFetchedFunding(funding) { export function importFetchedFunding(instance) {
return { return {
type: PATRON_FUNDING_IMPORT, type: PATRON_INSTANCE_FETCH_SUCCESS,
funding, instance,
}; };
} }
export function fetchFundingFail(error) { export function fetchFundingFail(error) {
return { return {
type: PATRON_FUNDING_FETCH_FAIL, type: PATRON_INSTANCE_FETCH_FAIL,
error, error,
skipAlert: true, skipAlert: true,
}; };

@ -3,7 +3,7 @@ import { connect } from 'react-redux';
import { injectIntl } from 'react-intl'; import { injectIntl } from 'react-intl';
import ImmutablePureComponent from 'react-immutable-pure-component'; import ImmutablePureComponent from 'react-immutable-pure-component';
import ProgressBar from '../../../components/progress_bar'; import ProgressBar from '../../../components/progress_bar';
import { fetchFunding } from 'soapbox/actions/patron'; import { fetchPatronInstance } from 'soapbox/actions/patron';
const moneyFormat = amount => ( const moneyFormat = amount => (
new Intl new Intl
@ -18,19 +18,16 @@ const moneyFormat = amount => (
class FundingPanel extends ImmutablePureComponent { class FundingPanel extends ImmutablePureComponent {
componentDidMount() { componentDidMount() {
this.props.dispatch(fetchFunding()); this.props.dispatch(fetchPatronInstance());
} }
render() { render() {
const { funding, patronUrl } = this.props; const { patron, patronUrl } = this.props;
if (patron.isEmpty()) return null;
if (!funding) { const amount = patron.getIn(['funding', 'amount']);
return null; const goal = patron.getIn(['goals', '0', 'amount']);
} const goal_text = patron.getIn(['goals', '0', 'text']);
const amount = funding.getIn(['funding', 'amount']);
const goal = funding.getIn(['goals', '0', 'amount']);
const goal_text = funding.getIn(['goals', '0', 'text']);
const goal_reached = amount >= goal; const goal_reached = amount >= goal;
let ratio_text; let ratio_text;
@ -66,7 +63,7 @@ class FundingPanel extends ImmutablePureComponent {
const mapStateToProps = state => { const mapStateToProps = state => {
return { return {
funding: state.getIn(['patron', 'funding']), patron: state.get('patron'),
patronUrl: state.getIn(['soapbox', 'extensions', 'patron', 'baseUrl']), patronUrl: state.getIn(['soapbox', 'extensions', 'patron', 'baseUrl']),
}; };
}; };

@ -1,12 +1,12 @@
import { PATRON_FUNDING_IMPORT } from '../actions/patron'; import { PATRON_INSTANCE_FETCH_SUCCESS } from '../actions/patron';
import { Map as ImmutableMap, fromJS } from 'immutable'; import { Map as ImmutableMap, fromJS } from 'immutable';
const initialState = ImmutableMap(); const initialState = ImmutableMap();
export default function patron(state = initialState, action) { export default function patron(state = initialState, action) {
switch(action.type) { switch(action.type) {
case PATRON_FUNDING_IMPORT: case PATRON_INSTANCE_FETCH_SUCCESS:
return state.set('funding', fromJS(action.funding)); return fromJS(action.instance);
default: default:
return state; return state;
} }

Loading…
Cancel
Save