chore: use monorepo organization
This commit is contained in:
parent
deaf7d6ecc
commit
a687827f7e
1099 changed files with 8184 additions and 11535 deletions
78
packages/admin-ui/src/utils/apollo.jsx
Normal file
78
packages/admin-ui/src/utils/apollo.jsx
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
import { ApolloClient, ApolloProvider, InMemoryCache, ApolloLink } from "@apollo/client";
|
||||
import { onError } from "@apollo/client/link/error"
|
||||
import createUploadLink from "apollo-upload-client/createUploadLink.mjs";
|
||||
import React, { useContext } from 'react'
|
||||
import { useHistory, useLocation } from 'react-router-dom'
|
||||
|
||||
import AppContext from 'src/AppContext'
|
||||
|
||||
const uploadLink = createUploadLink({
|
||||
credentials: 'include',
|
||||
uri: `/graphql`
|
||||
})
|
||||
|
||||
const getClient = (history, location, getUserData, setUserData, setRole) =>
|
||||
new ApolloClient({
|
||||
link: ApolloLink.from([
|
||||
onError(({ graphQLErrors, networkError }) => {
|
||||
if (graphQLErrors)
|
||||
graphQLErrors.forEach(({ message, locations, path, extensions }) => {
|
||||
if (extensions?.code === 'UNAUTHENTICATED') {
|
||||
setUserData(null)
|
||||
if (location.pathname !== '/login') history.push('/login')
|
||||
}
|
||||
console.log(
|
||||
`[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`
|
||||
)
|
||||
})
|
||||
if (networkError) console.log(`[Network error]: ${networkError}`)
|
||||
}),
|
||||
new ApolloLink((operation, forward) => {
|
||||
return forward(operation).map(response => {
|
||||
const context = operation.getContext()
|
||||
const {
|
||||
response: { headers }
|
||||
} = context
|
||||
|
||||
if (headers) {
|
||||
const role = headers.get('lamassu_role')
|
||||
setRole(role)
|
||||
}
|
||||
|
||||
return response
|
||||
})
|
||||
}),
|
||||
uploadLink
|
||||
]),
|
||||
cache: new InMemoryCache(),
|
||||
defaultOptions: {
|
||||
watchQuery: {
|
||||
fetchPolicy: 'no-cache',
|
||||
errorPolicy: 'ignore'
|
||||
},
|
||||
query: {
|
||||
fetchPolicy: 'no-cache',
|
||||
errorPolicy: 'all'
|
||||
},
|
||||
mutate: {
|
||||
errorPolicy: 'all'
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
const Provider = ({ children }) => {
|
||||
const history = useHistory()
|
||||
const location = useLocation()
|
||||
const { userData, setUserData, setRole } = useContext(AppContext)
|
||||
const client = getClient(
|
||||
history,
|
||||
location,
|
||||
() => userData,
|
||||
setUserData,
|
||||
setRole
|
||||
)
|
||||
|
||||
return <ApolloProvider client={client}>{children}</ApolloProvider>
|
||||
}
|
||||
|
||||
export default Provider
|
||||
Loading…
Add table
Add a link
Reference in a new issue