how to refactor this???
by Vladymyr Shevchuk
JavaScript
const mapStateToProps = (state, ownProps) => {
const activeParams = R.propOr({}, 'activeParams', selectCustomParamsByKey(state, KEY));
const {
fundId,
effectiveDate: asOfDate
} = ownProps.params;
const {
returnType,
benchmarkId
} = activeParams;
const primaryBenchmark = selectByKeyWithParams(state, KEY_PRIMARY_BENCHMARK, {fundId}) || {};
const baseCurrency = selectBaseCurrency(state, asOfDate);
const dependencyError = selectDependencyError(state, asOfDate);
const benchmarks = selectByKeyWithParams(state, KEY_BENCHMARKS, {fundId}) || {};
const formatedDate = formatDate(asOfDate);
const params = {
fundId,
asOfDate: formatedDate,
returnType,
baseCurrency,
dependencyError,
benchmarks,
activeParams,
error: primaryBenchmark.error || benchmarks.error
};
// TODO: this needs refactoring
if (benchmarkId !== '') {
const data = selectByKeyWithParams(state, KEY, {fundId, benchmarkId, asOfDate: formatedDate, returnType}) || {};
const inception = selectByKeyWithParams(state, KEY_INCEPTION_COLUMN, {fundId, benchmarkId, asOfDate: formatedDate, returnType}) || {};
return {
...params,
benchmarkId,
data,
inception
};
} else if (!primaryBenchmark.loading && primaryBenchmark.data) {
const benchmarkId = R.prop('benchmarkId', R.head(primaryBenchmark.data));
const data = selectByKeyWithParams(state, KEY, {fundId, benchmarkId, asOfDate: formatedDate, returnType}) || {};
const inception = selectByKeyWithParams(state, KEY_INCEPTION_COLUMN, {fundId, benchmarkId, asOfDate: formatedDate, returnType}) || {};
return {
...params,
benchmarkId,
data,
inception,
error: data.error
};
}
return params;
};