-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.js
More file actions
85 lines (74 loc) · 2.49 KB
/
App.js
File metadata and controls
85 lines (74 loc) · 2.49 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
import React, { useState, useEffect } from 'react';
import { LoadingScreen } from './src/screens/LoadingScreen';
import * as Font from 'expo-font';
import { Root } from "native-base";
import {
ApolloClient,
InMemoryCache,
ApolloProvider
} from "@apollo/client";
import { createUploadLink } from "apollo-upload-client";
import { setContext } from "@apollo/client/link/context";
import { getCash} from "./util";
import { AUTH_TOKEN } from "./cashItems";
import { AppNavigation } from "./src/navigations/AppNavigation";
import { AuthState } from "./src/context/auth/AuthState";
import { nameServer } from "./src/config";
export default function App() {
const [state, setState] = useState({loading: true});
useEffect(() => {
Font.loadAsync({
Roboto: require('native-base/Fonts/Roboto.ttf'),
Roboto_medium: require('native-base/Fonts/Roboto_medium.ttf'),
})
.then(() => setState({loading: false}))
.catch(() => {});
}, []);
const uri = { uri: `${nameServer}/graphql` };
const uploadLink = createUploadLink(uri);
const authLink = setContext(async () => {
return {
headers: {
authorization: await getCash(AUTH_TOKEN),
}
}
});
const client = new ApolloClient({
link: authLink.concat(uploadLink),
cache: new InMemoryCache({
typePolicies:{
Query:{
fields:{
personById: {
keyArgs: false,
merge(exciting= {}, incoming){
if(incoming.courses){
let courses = exciting.courses || [];
courses = [...courses, ...incoming.courses];
return {
...incoming,
courses
}
}
return exciting
}
}
}
}
}
}),
credentials: "include"
});
if(state.loading){
return <LoadingScreen/>;
}
return (
<ApolloProvider client={client}>
<AuthState>
<Root>
<AppNavigation/>
</Root>
</AuthState>
</ApolloProvider>
);
}