-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
75 lines (67 loc) · 1.82 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
import React, { useEffect, useState } from 'react'
import {Text, View, Image, ScrollView, ActivityIndicator, StyleSheet } from 'react-native';
import axios from 'axios';
import Request from './src/components/Request';
import Form from './src/components/Form';
import Header from './src/components/Header';
const App = () => {
const [fiat, setFiat] = useState('');
const [coin, setCoin] = useState('');
const [consultApi, setConsultApi] = useState(false);
const [result, setResult] = useState({});
const [loading, setLoading] = useState(false)
useEffect(() => {
const requestApi = async () => {
if (consultApi) {
const url = `https://min-api.cryptocompare.com/data/pricemultifull?fsyms=${coin}&tsyms=${fiat}`
const result = await axios.get(url);
setLoading(true)
setTimeout(() => {
setResult(result.data.DISPLAY[coin][fiat]);
setConsultApi(false);
setLoading(false)
}, 1000)
}
}
requestApi()
}, [consultApi]);
const Component = ()=> loading ? <ActivityIndicator /> : <Request result={result} />
return (
<ScrollView>
<Header />
<Image
style={styles.image}
source={require('./assets/img/cryptomonedas.png')}
/>
<View style={styles.content}>
<Form
fiat={fiat}
coin={coin}
setFiat={setFiat}
setCoin={setCoin}
setConsultApi={setConsultApi}
/>
</View>
<View style={styles.componentView}>
<Component
size="large"
color="#5e49e2"
/>
</View>
</ScrollView>
)
}
export default App
const styles = StyleSheet.create({
image: {
width: '100%',
height: 150,
marginHorizontal: '2.5%'
},
content: {
marginHorizontal: '2.5%'
},
componentView: {
marginTop: 40
}
})