-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAppEntry.js
More file actions
111 lines (92 loc) · 3.09 KB
/
Copy pathAppEntry.js
File metadata and controls
111 lines (92 loc) · 3.09 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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import React, { Component } from 'react';
import { Provider } from 'react-redux';
import configureStore from './src/state/configureStore';
import App from './src/App';
import { KeepAwake, registerRootComponent } from 'expo';
import { Font } from 'expo';
import { View, AsyncStorage } from 'react-native';
import SoundManager, { loadSounds } from 'assets/audio/SoundManager';
import MusicManager, { loadMusic } from 'assets/audio/MusicManager';
if (__DEV__) {
KeepAwake.activate();
}
let store = configureStore();
let isSoundActive, isMusicActive;
const LVLS = 20;
const ids = Array.apply(null, {length: LVLS}).map(Function.call, Number);
class AppEntry extends Component {
constructor(props) {
super(props);
this.state = {
loaded: false
};
}
async componentWillMount() {
await Font.loadAsync({
Roboto: require("native-base/Fonts/Roboto.ttf"),
Roboto_medium: require("native-base/Fonts/Roboto_medium.ttf"),
Raleway: require("assets/fonts/Raleway.ttf"),
MyriadProBold: require("assets/fonts/MyriadProBold.otf"),
MyriadPro: require("assets/fonts/MyriadPro.ttf")
});
let solved, current;
try {
const storeSolved = await AsyncStorage.getItem('solved');
const storeCurrent = await AsyncStorage.getItem('current');
isSoundActive = await AsyncStorage.getItem('isSoundActive');
isMusicActive = await AsyncStorage.getItem('isMusicActive');
isSoundActive = isSoundActive ? JSON.parse(isSoundActive) : true;
isMusicActive = isMusicActive ? JSON.parse(isMusicActive) : true;
solved = storeSolved ? JSON.parse(storeSolved) : [];
current = storeCurrent ? +storeCurrent : 0;
} catch (error) {
console.log('get data error:', error);
solved = [];
current = 0;
}
// this.buildStore(current, solved, isSoundActive)
// .then(loadSounds)
// .then(loadMusic)
// .then(() => { console.log("loaded everything"); this.setState(() => ({loaded: true})) });
this.buildStore(current, solved);
loadSounds();
loadMusic();
this.setState(() => ({loaded: true}))
SoundManager.setActive(false);
MusicManager.setActive(false);
}
buildStore(current, solved) {
//
const IS_AD_FREE = __DEV__ ? false : false;
//
let byid = {};
ids.forEach((id) => {
// if id is in solved array
byid[id] = {
solved: solved.indexOf(id) != -1
}
})
let state = {
ids,
isSoundActive,
isMusicActive,
current,
byid,
isAdFree: IS_AD_FREE
}
store = configureStore(state);
return new Promise((res, rej) => res());
}
render() {
return (
this.state.loaded &&
<Provider store={store}>
<View style={{flexGrow: 1}}>
<App />
</View>
</Provider>
)
}
}
registerRootComponent(AppEntry);
export default AppEntry;