index.tsx 822 Bytes
import Component from "./Component";
import * as React from "react";
import { graphql, Query, Mutation } from "react-apollo";
import { withRouter, RouteComponentProps } from "react-router";

const FETCH_CONTRACT = require("./fetchContract.gql");

interface Props {
  contract: any;
}

class FetchContractQuery extends Query<Props> {}

const QueryComponent: React.SFC<RouteComponentProps<{}>> = props => (
  <FetchContractQuery
    query={FETCH_CONTRACT}
    fetchPolicy="network-only"
    variables={{ id: props.match.params["id"] }}
  >
    {({ loading, error, data }) => {
      if (loading) return <p>Loading...</p>;
      else if (error || !data!.contract) return <p>Error :(</p>;
      else return <Component contract={data!.contract} />;
    }}
  </FetchContractQuery>
);

export default withRouter(QueryComponent);