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'
import {
makeSelectCostInfoForUri,
makeSelectFetchingCostInfoForUri,
} from 'selectors/cost_info'
import FilePrice from './view'
const makeSelect = () => {
const selectCostInfoForUri = makeSelectCostInfoForUri()
const selectFetchingCostInfoForUri = makeSelectFetchingCostInfoForUri()
const select = (state, props) => ({
costInfo: selectCostInfoForUri(state, props),
fetching: selectFetchingCostInfoForUri(state, props),
})
return select

View file

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

View file

@ -17,3 +17,19 @@ export const makeSelectCostInfoForUri = () => {
(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
)
}