summaryrefslogtreecommitdiffstats
path: root/lib/withData.js
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-01-30 12:41:01 -0500
committerWes Bos <wesbos@gmail.com>2018-01-30 12:41:01 -0500
commitcd0b07b3adb36fb5ec098f9e511ab45d774fee7b (patch)
treea203e5010219ccea1acc6bbd2c0a4bcfa0a78615 /lib/withData.js
parent0a1648bf47490b312169c531aeb51ef4725e8d2e (diff)
Move to Prisma Backend
Diffstat (limited to 'lib/withData.js')
-rw-r--r--lib/withData.js76
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>
- );
- }
- };