-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathApp.js
112 lines (105 loc) · 2.8 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
import React, { useState } from 'react';
import {
StyleSheet,
TextInput,
View,
FlatList,
Button,
Keyboard
}
from 'react-native';
import Cartao from './components/Cartao';
export default function App() {
const [cidade, setCidade] = useState('');
const [cidadesStatus, setCidadesStatus] = useState([]);
const [previsoes, setPrevisoes] = useState([]);
const capturarCidade = (cidade) => {
setCidade(cidade);
}
const obterCidadeStatus = (city, lat, lon) => {
const target = cityStatusEndPoint + "lat=" + lat + "&lon=" + lon + "&appid=" + apiKey;
fetch(target)
.then((dados) => {
return dados.json()
})
.then((dados) => {
const status = {
city: city,
sunrise: dados.current.sunrise,
sunset: dados.current.sunset,
feels_like: dados.current.feels_like,
icon: dados.current.weather[0].icon
};
setCidadesStatus([...cidadesStatus, status]);
Keyboard.dismiss();
});
};
const obterCoordenada = () => {
const target = cityEndPoint + cidade + "&appid=" + apiKey;
fetch(target)
.then((dados) => {
return dados.json()
})
.then((dados) => {
if(dados.cod == 200) {
const name = dados.city.name;
const lat = dados.city.coord.lat;
const lon = dados.city.coord.lon;
obterCidadeStatus(name, lat, lon);
}
});
};
const cityEndPoint = "https://api.openweathermap.org/data/2.5/forecast?lang=pt_br&units=metric&q=";
const cityStatusEndPoint = "https://api.openweathermap.org/data/2.5/onecall?lang=pt_br&units=metric&";
const apiKey = 'YOUR_API_KEY';
return (
<View style={styles.container}>
<View style={styles.entrada}>
<TextInput
style={styles.nomeCidade}
placeholder="Digite o nome da cidade"
value={cidade}
onChangeText={capturarCidade}
/>
<Button
title="ok"
onPress={obterCoordenada}
/>
</View>
<FlatList
data={cidadesStatus}
renderItem={
city => (
<Cartao
city={city.item.city}
sunset={new Date(city.item.sunset).toTimeString()}
sunrise={new Date(city.item.sunrise).toTimeString()}
feels_like={city.item.feels_like}
icon={city.item.icon}
/>
)
}
/>
</View>
);
}
const styles = StyleSheet.create({
container: {
padding: 40,
flexDirection: 'column',
flex: 1,
backgroundColor: '#FFF'
},
entrada: {
flexDirection: 'row',
justifyContent: 'space-between',
marginBottom: 8
},
nomeCidade: {
padding: 12,
borderBottomColor: '#BB96F3',
borderBottomWidth: 2,
textAlign: 'left',
flexGrow: 0.9
},
});