---
This commit is contained in:
@@ -0,0 +1,38 @@
|
||||
import { HttpLink } from '@apollo/client'
|
||||
import { ApolloClient, InMemoryCache } from '@apollo/client'
|
||||
|
||||
// This is the client-side client
|
||||
export const apollo = new ApolloClient({
|
||||
link: new HttpLink({
|
||||
uri: process.env.NODE_ENV == 'production' ? 'https://litreddit-backend.elliot-at-zuri.ch/graphql' : process.env.NEXT_PUBLIC_BACKEND_URI,
|
||||
credentials: 'include', // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials
|
||||
}),
|
||||
cache: new InMemoryCache({
|
||||
typePolicies: {
|
||||
Query: {
|
||||
fields: {
|
||||
// https://www.apollographql.com/docs/react/pagination/core-api/
|
||||
posts: {
|
||||
// Don't cache separate results based on
|
||||
// any of this field's arguments.
|
||||
keyArgs: false,
|
||||
|
||||
// Concatenate the incoming list items with
|
||||
// the existing list items.
|
||||
merge: (existing: { __ref: string }[] = [], incoming: { __ref: string }[]) => {
|
||||
const cacheItems: typeof existing = JSON.parse(JSON.stringify(existing))
|
||||
const refs = existing.map(e => e.__ref)
|
||||
for (let i = 0;i < incoming.length;i++) {
|
||||
if (!refs.includes(incoming[i].__ref)) {
|
||||
cacheItems.push(incoming[i])
|
||||
refs.push(incoming[i].__ref)
|
||||
}
|
||||
}
|
||||
return cacheItems
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}),
|
||||
})
|
||||
Reference in New Issue
Block a user