Issues (1)

src/utils.js (1 issue)

1
/* eslint no-unused-vars: 0 */
2
3
import { doneFetching } from './module';
4
5
/**
6
 *
7
 * @param {Array} components
8
 * @param {Object} params
9
 * @param {Object} store
10
 * @returns {Promise[]}
11
 */
12
export function grabPromises(components, params, store) {
13
  return flattenComponents(components)
14
    .filter(component => component && component.fetchData instanceof Function)
15
    .map(component => component.fetchData(store, params));
16
}
17
18
/**
19
 *
20
 * @param {Array} components
21
 * @returns {Array}
22
 */
23
export function flattenComponents(components) {
24
  const flattened = [];
25
  for (let i = 0; i < components.length; i++) {
26
    // handle named components
27
    // https://github.com/reactjs/react-router/blob/latest/docs/API.md#named-components
28
    if (typeof components[i] === 'object') {
29
      for (let [key, value] of Object.entries(components[i])) {
0 ignored issues
show
The variable key seems to be never used. Consider removing it.
Loading history...
30
        flattened.push(value);
31
      }
32
    } else {
33
      flattened.push(components[i]);
34
    }
35
  }
36
  return flattened;
37
}
38
39
/**
40
 *
41
 * @param {Array} components
42
 * @param {Object} params
43
 * @param {Object} store
44
 * @returns {Promise}
45
 */
46
export function fetchDataOnServer({ components, params }, store) {
47
  return Promise.all(grabPromises(components, params, store))
48
    .then(() => {
49
      store.dispatch(doneFetching());
50
    });
51
}
52