/
ProjectsRoute.js
41 lines (32 loc) · 1.13 KB
/
ProjectsRoute.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
/* @flow */
/* eslint fp/no-class:0 */
import React from 'react';
import Relay from 'react-relay/classic';
import { connect } from 'react-redux';
import { parse } from 'query-string';
import { handleStateChange } from '@ncigdc/dux/relayProgress';
import ProjectsPage from '@ncigdc/containers/ProjectsPage';
import { parseIntParam, parseFilterParam, parseJSURLParam } from '@ncigdc/utils/uri';
import { viewerQuery } from './queries';
const DEFAULT_PROJECT_SORT = [{ field: 'summary.case_count', order: 'desc' }];
class ProjectsRoute extends Relay.Route {
static routeName = 'ProjectsRoute';
static queries = viewerQuery;
static prepareParams = ({ location: { search } }) => {
const q = parse(search);
return {
offset: parseIntParam(q.offset, 0),
size: 1000,
filters: parseFilterParam(q.filters, null),
projects_sort: parseJSURLParam(q.projects_sort, DEFAULT_PROJECT_SORT),
};
}
}
export default connect()((props: mixed) => (
<Relay.Renderer
Container={ProjectsPage}
queryConfig={new ProjectsRoute(props)}
environment={Relay.Store}
onReadyStateChange={handleStateChange(props)}
/>
));