-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
120 lines (113 loc) · 3.35 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
import React, { useState, useEffect } from "react";
import { StyleSheet } from "react-native";
import Constants from "expo-constants";
import * as eva from "@eva-design/eva";
import { NavigationContainer } from "@react-navigation/native";
import { customMapping } from "./util/mapping";
import axios from "axios";
import * as Location from "expo-location";
import Restaurantes from "./components/Restaurantes";
import { EvaIconsPack } from "@ui-kitten/eva-icons";
import HomeScreen from "./components/HomeScreen";
import {
createStackNavigator,
TransitionPresets,
} from "@react-navigation/stack";
import {
ApplicationProvider,
Layout,
Text,
DarkTheme,
Spinner,
Icon,
IconRegistry,
} from "@ui-kitten/components";
const Stack = createStackNavigator();
export default function App() {
const [userLocation, setUserLocation] = useState(undefined);
useEffect(() => {
_getLocationAsync();
});
const _getLocationAsync = async () => {
let { status } = await Location.requestForegroundPermissionsAsync();
if (status !== "granted") {
setUserLocation("Permission to access location was denied");
return;
}
let location = await Location.getCurrentPositionAsync({});
const res = await axios.get(
"https://api.bigdatacloud.net/data/reverse-geocode-client?latitude=" +
location.coords.latitude +
"&longitude=" +
location.coords.longitude +
"&localityLanguage=en"
);
setUserLocation(res.data.locality + ", " + res.data.countryCode);
};
return (
<>
<IconRegistry icons={EvaIconsPack} />
<ApplicationProvider
{...eva}
customMapping={customMapping}
theme={eva.light}
>
<NavigationContainer theme={DarkTheme}>
<Stack.Navigator
initialRouteName="Home"
screenOptions={{
headerShown: true,
gestureEnabled: true,
cardOverlayEnabled: true,
...TransitionPresets.ModalSlideFromBottomIOS,
}}
>
<Stack.Screen
name="Home"
component={
userLocation
? HomeScreen
: () => (
<Layout
style={{
flex: 1,
justifyContent: "center",
alignItems: "center",
}}
>
<Text style={styles.p}>
Obtaining your Location{" "}
<Icon name="map" style={{ height: 25, width: 25 }} />
</Text>
<Spinner size="giant" />
</Layout>
)
}
options={{
title: "Welcome!",
}}
/>
<Stack.Screen
name="Restaurantes"
component={Restaurantes}
initialParams={{ loc: userLocation }}
options={{ title: "Restaurantes" }}
/>
</Stack.Navigator>
</NavigationContainer>
</ApplicationProvider>
</>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: "center",
paddingTop: Constants.statusBarHeight,
backgroundColor: "#ecf0f1",
padding: 8,
},
p: {
margin: 10,
},
});