/
App.js
44 lines (38 loc) · 1.15 KB
/
App.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import React, { useState, useEffect } from 'react'
import { ApolloClient, createHttpLink, InMemoryCache, ApolloProvider } from '@apollo/client'
import AsyncStorage from '@react-native-community/async-storage'
import { persistCache } from 'apollo3-cache-persist';
import { setContext } from '@apollo/client/link/context';
import GitRepository from './src/Component/GitRepository';
const cache = new InMemoryCache()
const httpLink = createHttpLink({
uri: 'https://api.github.com/graphql',
});
const authLink = setContext((_, { headers }) => {
const token = "ghp_xxxxxxxxxxxxxx";
return {
headers: {
...headers,
authorization: token ? `Bearer ${token}` : "",
}
}
});
const client = new ApolloClient({
link: authLink.concat(httpLink),
cache,
defaultOptions: { watchQuery: { fetchPolicy: 'cache-and-network' } },
})
export default function App() {
const [loadingCache, setLoadingCache] = useState(true)
useEffect(() => {
persistCache({
cache,
storage: AsyncStorage,
}).then(() => setLoadingCache(false))
}, [])
return (
<ApolloProvider client={client}>
<GitRepository />
</ApolloProvider>
)
}