-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathApp.js
91 lines (82 loc) · 2.27 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
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
86
87
88
89
90
91
import { DrawerNavigator, StackNavigator } from "react-navigation";
import { Font } from "expo";
import React from "react";
import { AppState } from "react-native";
import BrowserView from "./src/BrowserView";
import ChattyRoot from "./src/chattyRoot/ChattyRoot";
import chattyStore from "./src/data/ChattyStore";
import HelpView from "./src/HelpView";
import LoginScreen from "./src/settings/LoginScreen";
import NewRootPostView from "./src/postViews/NewRootPostView";
import SettingsScreen from "./src/settings/SettingsScreen";
import StyleConverters from "./src/styles/StyleConverters";
import ThreadList from "./src/threadView/ThreadList";
import debugStore from "./src/data/DebugStore";
import DebugView from "./src/DebugView";
const Chatty = StackNavigator(
{
Home: { screen: ChattyRoot },
Thread: { screen: ThreadList },
BrowserView: { screen: BrowserView },
NewThread: { screen: NewRootPostView }
}, {
navigationOptions: {
gesturesEnabled: true
}
});
const Settings = StackNavigator({
Settings: { screen: SettingsScreen },
Login: { screen: LoginScreen }
});
const AppNavigator = DrawerNavigator(
{
Chatty: { screen: Chatty },
Settings: { screen: Settings },
Help: {
screen: StackNavigator(
{
Help: { screen: HelpView },
DebugView: { screen: DebugView }
})
}
},
{
initialRouteName: "Chatty",
drawerBackgroundColor: "black",
contentOptions: {
inactiveTintColor: "lightgray",
activeTintColor: StyleConverters.getAccentColor()
}
}
);
export default class App extends React.Component {
componentWillMount() {
Font.loadAsync({
"source-code-pro-light": require("./assets/fonts/SourceCodePro-Light.ttf")
});
chattyStore.startChatyRefresh();
}
componentDidMount() {
AppState.addEventListener("change", this._handleAppStateChange);
}
componentWillUnmount() {
chattyStore.stopChattyRefresh();
AppState.removeEventListener("change", this._handleAppStateChange);
}
render() {
return <AppNavigator />;
}
_handleAppStateChange = (nextState) => {
switch (nextState) {
case "active":
debugStore.addLog("App activated");
chattyStore.startChatyRefresh();
break;
case "background":
case "inactive":
debugStore.addLog("App backgrounded or inactive");
chattyStore.stopChattyRefresh();
break;
}
};
}