diff options
| author | Wes Bos <wesbos@gmail.com> | 2018-01-30 12:41:01 -0500 |
|---|---|---|
| committer | Wes Bos <wesbos@gmail.com> | 2018-01-30 12:41:01 -0500 |
| commit | cd0b07b3adb36fb5ec098f9e511ab45d774fee7b (patch) | |
| tree | a203e5010219ccea1acc6bbd2c0a4bcfa0a78615 /lib/withData.js | |
| parent | 0a1648bf47490b312169c531aeb51ef4725e8d2e (diff) | |
Move to Prisma Backend
Diffstat (limited to 'lib/withData.js')
| -rw-r--r-- | lib/withData.js | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/lib/withData.js b/lib/withData.js deleted file mode 100644 index 0c68f49..0000000 --- a/lib/withData.js +++ /dev/null @@ -1,76 +0,0 @@ -import React from 'react'; -import PropTypes from 'prop-types'; -import { ApolloProvider, getDataFromTree } from 'react-apollo'; -import Head from 'next/head'; -import initApollo from './initApollo'; - -// Gets the display name of a JSX component for dev tools -function getComponentDisplayName(Component) { - return Component.displayName || Component.name || 'Unknown'; -} - -export default ComposedComponent => - class WithData extends React.Component { - static displayName = `WithData(${getComponentDisplayName(ComposedComponent)})`; - static propTypes = { - serverState: PropTypes.object.isRequired, - }; - - static async getInitialProps(ctx) { - let serverState = { apollo: {} }; - - // Evaluate the composed component's getInitialProps() - let composedInitialProps = {}; - if (ComposedComponent.getInitialProps) { - composedInitialProps = await ComposedComponent.getInitialProps(ctx); - } - - // Run all GraphQL queries in the component tree - // and extract the resulting data - if (!process.browser) { - const apollo = initApollo(); - // Provide the `url` prop data in case a GraphQL query uses it - const url = { query: ctx.query, pathname: ctx.pathname }; - try { - // Run all GraphQL queries - await getDataFromTree( - <ApolloProvider client={apollo}> - <ComposedComponent url={url} {...composedInitialProps} /> - </ApolloProvider> - ); - } catch (error) { - // Prevent Apollo Client GraphQL errors from crashing SSR. - // Handle them in components via the data.error prop: - // http://dev.apollodata.com/react/api-queries.html#graphql-query-data-error - } - // getDataFromTree does not call componentWillUnmount - // head side effect therefore need to be cleared manually - Head.rewind(); - - // Extract query data from the Apollo store - serverState = { - apollo: { - data: apollo.cache.extract(), - }, - }; - } - - return { - serverState, - ...composedInitialProps, - }; - } - - constructor(props) { - super(props); - this.apollo = initApollo(this.props.serverState.apollo.data); - } - - render() { - return ( - <ApolloProvider client={this.apollo}> - <ComposedComponent {...this.props} /> - </ApolloProvider> - ); - } - }; |
