diff options
| author | Wes Bos <wesbos@gmail.com> | 2018-08-17 15:51:02 -0400 |
|---|---|---|
| committer | Wes Bos <wesbos@gmail.com> | 2018-08-17 15:51:02 -0400 |
| commit | c3bbebfcfeed7a9b8c7470d7b48e12046d834e59 (patch) | |
| tree | 05c50c931d0e709c640744387fbabe870658e9e7 /stepped-solutions/40/frontend/lib/withData.js | |
| parent | 124f227a8235e08bddf8376e0b3d01d33c4414f3 (diff) | |
suuuup everyone
Diffstat (limited to 'stepped-solutions/40/frontend/lib/withData.js')
| -rwxr-xr-x | stepped-solutions/40/frontend/lib/withData.js | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/stepped-solutions/40/frontend/lib/withData.js b/stepped-solutions/40/frontend/lib/withData.js new file mode 100755 index 0000000..33908d6 --- /dev/null +++ b/stepped-solutions/40/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: true, + }, + }, + }); +} + +export default withApollo(createClient); |
