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 Timeline from './Timeline'
 7import Message from './Message'
 8
 9const QUERY = gql`
10  query($id: String!, $first: Int = 10, $after: String) {
11    defaultRepository {
12      bug(prefix: $id) {
13        operations(first: $first, after: $after) {
14          nodes {
15            ...Create
16            ...Comment
17            ...LabelChange
18          }
19          pageInfo {
20            hasNextPage
21            endCursor
22          }
23        }
24      }
25    }
26  }
27  ${Message.createFragment}
28  ${Message.commentFragment}
29  ${LabelChange.fragment}
30`
31
32const TimelineQuery = ({id}) => (
33  <Query query={QUERY} variables={{id, first: 100}}>
34    {({loading, error, data, fetchMore}) => {
35      if (loading) return <CircularProgress/>
36      if (error) return <p>Error: {error}</p>
37      return <Timeline ops={data.defaultRepository.bug.operations.nodes} fetchMore={fetchMore}/>
38    }}
39  </Query>
40)
41
42export default TimelineQuery