From 908c05e1d5c3e73b0b8c75a3379f324584a2bd6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mime=20=C4=8Cuvalo?= Date: Fri, 3 Nov 2023 23:01:08 +0000 Subject: [PATCH] graphql: isomorphlink --- app/apollo.ts | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/app/apollo.ts b/app/apollo.ts index 5598445..a7abff5 100644 --- a/app/apollo.ts +++ b/app/apollo.ts @@ -2,11 +2,14 @@ import { ApolloClient, ApolloLink, HttpLink, InMemoryCache, NormalizedCacheObjec import { clientCache, dataIdFromObject } from 'data/localState'; import { BatchHttpLink } from '@apollo/client/link/batch-http'; +import { SchemaLink } from '@apollo/client/link/schema'; import isEqual from 'lodash/isEqual'; import merge from 'deepmerge'; import { onError } from '@apollo/client/link/error'; +import resolvers from 'data/resolvers'; import schema from 'data/schema'; import { useMemo } from 'react'; +import { makeExecutableSchema } from '@graphql-tools/schema'; export const APOLLO_STATE_PROP_NAME = '__APOLLO_STATE__'; @@ -38,7 +41,21 @@ function createApolloClient() { httpLink, // if test is true, debatch batchHttpLink // otherwise, batch ); - const link = ApolloLink.from([errorLink, splitLink]); + + function createIsomorphLink() { + if (typeof window === 'undefined') { + console.log('blah'); + const executableSchema = makeExecutableSchema({ + typeDefs: schema, + resolvers, + }); + return new SchemaLink({ schema: executableSchema }); + } else { + return ApolloLink.from([errorLink, splitLink]); + } + } + + const link = createIsomorphLink(); return new ApolloClient({ ssrMode: typeof window === 'undefined',