TimelineQuery.js

 1import CircularProgress from '@material-ui/core/CircularProgress';
 2import gql from 'graphql-tag';
 3import React from 'react';
 4import { Query } from 'react-apollo';
 5import LabelChange from './LabelChange';
 6import SetStatus from './SetStatus';
 7import SetTitle from './SetTitle';
 8import Timeline from './Timeline';
 9import Message from './Message';
10
11const QUERY = gql`
12  query($id: String!, $first: Int = 10, $after: String) {
13    defaultRepository {
14      bug(prefix: $id) {
15        timeline(first: $first, after: $after) {
16          nodes {
17            ...LabelChange
18            ...SetStatus
19            ...SetTitle
20            ...AddComment
21            ...Create
22          }
23          pageInfo {
24            hasNextPage
25            endCursor
26          }
27        }
28      }
29    }
30  }
31  ${Message.createFragment}
32  ${Message.commentFragment}
33  ${LabelChange.fragment}
34  ${SetTitle.fragment}
35  ${SetStatus.fragment}
36`;
37
38const TimelineQuery = ({ id }) => (
39  <Query query={QUERY} variables={{ id, first: 100 }}>
40    {({ loading, error, data, fetchMore }) => {
41      if (loading) return <CircularProgress />;
42      if (error) return <p>Error: {error}</p>;
43      return (
44        <Timeline
45          ops={data.defaultRepository.bug.timeline.nodes}
46          fetchMore={fetchMore}
47        />
48      );
49    }}
50  </Query>
51);
52
53export default TimelineQuery;