-
-
Notifications
You must be signed in to change notification settings - Fork 80
/
index.js
50 lines (41 loc) · 1.26 KB
/
index.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
45
46
47
48
49
50
import React from "react"
import ReactDOM from "react-dom"
import { Observer } from "mobx-react-lite"
import Pages from "./pages"
import Login from "./pages/login"
import injectStyles from "./styles"
import { createHttpClient } from "mst-gql"
import { RootStore } from "./models"
import { StoreContext } from "./models/reactUtils"
const gqlHttpClient = createHttpClient("http://localhost:4000/graphql", {
headers: {
authorization: localStorage.getItem("token"),
"client-name": "Space Explorer [web]",
"client-version": "1.0.0"
}
})
const rootStore = RootStore.create(
{
loginStatus: localStorage.getItem("token") ? "loggedIn" : "loggedOut",
cartItems: []
},
{
gqlHttpClient
}
)
/**
* Render our app
* - We need a router, so we can navigate the app. We're using Reach router for this.
* The router chooses between which component to render, depending on the url path.
* ex: localhost:3000/login will render only the `Login` component
*/
injectStyles()
ReactDOM.render(
<StoreContext.Provider value={rootStore}>
<Observer>
{() => (rootStore.loginStatus === "loggedIn" ? <Pages /> : <Login />)}
</Observer>
</StoreContext.Provider>,
document.getElementById("root")
)
window.store = rootStore // for debugging / demo