summaryrefslogtreecommitdiffstats
path: root/stepped-solutions/49/frontend/lib
diff options
context:
space:
mode:
authorWes Bos <wesbos@gmail.com>2018-08-21 15:51:34 -0400
committerWes Bos <wesbos@gmail.com>2018-08-21 15:51:34 -0400
commit5d4fca10187c8ffff19161ec2b3b02814789a3b2 (patch)
tree298f91497e1bbef136a1f5f7c2eb29bd012ed133 /stepped-solutions/49/frontend/lib
parent3065f07ba8f26c7ccfe440632655fb809dc3ac03 (diff)
49
Diffstat (limited to 'stepped-solutions/49/frontend/lib')
-rwxr-xr-xstepped-solutions/49/frontend/lib/withData.js42
1 files changed, 42 insertions, 0 deletions
diff --git a/stepped-solutions/49/frontend/lib/withData.js b/stepped-solutions/49/frontend/lib/withData.js
new file mode 100755
index 0000000..27571e7
--- /dev/null
+++ b/stepped-solutions/49/frontend/lib/withData.js
@@ -0,0 +1,42 @@
+import withApollo from 'next-with-apollo';
+import ApolloClient from 'apollo-boost';
+import { endpoint } from '../config';
+import { LOCAL_STATE_QUERY } from '../components/Cart';
+
+function createClient({ headers }) {
+ return new ApolloClient({
+ uri: process.env.NODE_ENV === 'development' ? endpoint : endpoint,
+ request: operation => {
+ operation.setContext({
+ fetchOptions: {
+ credentials: 'include',
+ },
+ headers,
+ });
+ },
+ // local data
+ clientState: {
+ resolvers: {
+ Mutation: {
+ toggleCart(_, variables, { cache }) {
+ // read the cartOpen value from the cache
+ const { cartOpen } = cache.readQuery({
+ query: LOCAL_STATE_QUERY,
+ });
+ // Write the cart State to the opposite
+ const data = {
+ data: { cartOpen: !cartOpen },
+ };
+ cache.writeData(data);
+ return data;
+ },
+ },
+ },
+ defaults: {
+ cartOpen: false,
+ },
+ },
+ });
+}
+
+export default withApollo(createClient);