UNPKG

create-bar-project

Version:

This module helps create a base for web application projects.

33 lines (27 loc) 1.07 kB
import { ApolloClient } from '@apollo/client'; import { isBrowser } from 'Common/Utils'; import { getToken } from 'Common/Utils/Cookies'; import { NextPageContext } from 'next'; import { useMemo } from 'react'; import cache from './Cache'; import { resolvers } from './Resolvers'; let apolloClient: ApolloClient<any>; const createApolloClient = (ctx?: NextPageContext, initialState?: any) => { return new ApolloClient({ ssrMode: true, uri: process.env.NEXT_PUBLIC_SERVER_API_URL, headers: { Authorization: `Bearer ${getToken(ctx)}` }, resolvers, cache: cache.restore(initialState || {}), }); }; export const initializeApollo = (initialState: any = null, ctx?: NextPageContext) => { const _apolloClient = apolloClient ?? createApolloClient(ctx, initialState); if (!isBrowser()) return _apolloClient; if (!apolloClient) apolloClient = _apolloClient; return _apolloClient; }; export const useApollo = (initialState: any) => { const store = useMemo(() => initializeApollo(initialState), [initialState]); return store; };