-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathApp.js
More file actions
71 lines (63 loc) · 2.31 KB
/
App.js
File metadata and controls
71 lines (63 loc) · 2.31 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
import React, { useState, useEffect } from 'react';
import { useWindowDimensions, View } from 'react-native';
import GameContext from './GameContext';
import { StatusBar } from 'expo-status-bar';
import Game from './Screens/Game'
import AsyncStorage from "@react-native-async-storage/async-storage"
export default function App() {
const [ appPreferences, setAppPreferences ] = useState({})
const { height, width } = useWindowDimensions()
const getStoredPreferences = async () => {
try {
const jsonValue = await AsyncStorage.getItem('@preferences')
return jsonValue != null ? JSON.parse(jsonValue) : null;
} catch (e) {
console.error("getStoredPreferences error: ", e)
}
}
const storePreferences = async (preferenceObject) => {
try {
const jsonValue = JSON.stringify(preferenceObject)
await AsyncStorage.setItem('@preferences', jsonValue)
} catch (e) {
console.error("storePreferences error: ", e)
}
}
const handlePreferenceLoad = async () => {
const storedPreferences = await getStoredPreferences()
if (!storedPreferences) {
const newPreferencesObj = {
deckTheme: "Default",
sounds: true,
tableTheme: "table-green"
}
setAppPreferences(newPreferencesObj)
storePreferences(newPreferencesObj)
} else {
if (storedPreferences.deckTheme === undefined || storedPreferences.sounds === undefined || storedPreferences.tableTheme === undefined) {
if (storedPreferences.deckTheme === undefined) storedPreferences.deckTheme = "Default"
if (storedPreferences.sounds === undefined) storedPreferences.sounds = true
if (storedPreferences.tableTheme === undefined) storedPreferences.tableTheme = "table-green"
storePreferences(storedPreferences)
}
setAppPreferences(storedPreferences)
}
}
useEffect(() => {
handlePreferenceLoad()
}, [])
useEffect(() => {
if (appPreferences.deckTheme !== undefined) {
storePreferences(appPreferences)
}
}, [ appPreferences ])
if (appPreferences.deckTheme === undefined) return null
else return (
<GameContext appPreferences={ appPreferences } setAppPreferences={ setAppPreferences }>
<View style={ { position: "absolute", width: width, height: height, alignItems: "center", justifyContent: "center", backgroundColor: "#000" } }>
<StatusBar style="light" hidden={ true } />
<Game />
</View>
</GameContext>
);
}