Don't try to fetch cost info if it's already fetching #153

Merged
6ea86b96 merged 1 commit from double-fetch-cost into master 2017-05-28 17:28:15 +02:00
3 changed files with 22 additions and 2 deletions

View file

@ -7,14 +7,17 @@ import {
} from 'actions/cost_info' } from 'actions/cost_info'
import { import {
makeSelectCostInfoForUri, makeSelectCostInfoForUri,
makeSelectFetchingCostInfoForUri,
} from 'selectors/cost_info' } from 'selectors/cost_info'
import FilePrice from './view' import FilePrice from './view'
const makeSelect = () => { const makeSelect = () => {
const selectCostInfoForUri = makeSelectCostInfoForUri() const selectCostInfoForUri = makeSelectCostInfoForUri()
const selectFetchingCostInfoForUri = makeSelectFetchingCostInfoForUri()
const select = (state, props) => ({ const select = (state, props) => ({
costInfo: selectCostInfoForUri(state, props), costInfo: selectCostInfoForUri(state, props),
fetching: selectFetchingCostInfoForUri(state, props),
}) })
return select return select

View file

@ -16,10 +16,11 @@ class FilePrice extends React.Component{
const { const {
costInfo, costInfo,
fetchCostInfo, fetchCostInfo,
uri uri,
fetching,
} = props } = props
if (costInfo === undefined) { if (costInfo === undefined && !fetching) {
fetchCostInfo(uri) fetchCostInfo(uri)
} }
} }

View file

@ -17,3 +17,19 @@ export const makeSelectCostInfoForUri = () => {
(costInfo) => costInfo (costInfo) => costInfo
) )
} }
export const selectFetchingCostInfo = createSelector(
_selectState,
(state) => state.fetching || {}
)
const selectFetchingCostInfoForUri = (state, props) => {
return selectFetchingCostInfo(state)[props.uri]
}
export const makeSelectFetchingCostInfoForUri = () => {
return createSelector(
selectFetchingCostInfoForUri,
(fetching) => !!fetching
)
}