-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.js
89 lines (63 loc) · 1.89 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
import React from 'react';
import { StyleSheet, Text, View, ScrollView } from 'react-native';
import Header from './components/Header';
import LatestStatus from './components/LatestStatus';
import Row from './components/Row';
const styles = StyleSheet.create({
container: {
flex: 1,
marginTop: 25,
backgroundColor: '#fff',
},
});
export default class App extends React.Component {
state = {
rates: [],
lastUpdated: '',
bank: '',
}
componentDidMount() {
this.getData();
}
getData = async () => {
let responseRates = [];
try {
const response = await fetch('http://forex.cbm.gov.mm/api/latest');
let {rates, timestamp, info} = await response.json();
const responseWithFullNames = await fetch('http://forex.cbm.gov.mm/api/currencies');
const {currencies} = await responseWithFullNames.json();
const keysArr = Object.keys(rates);
const valuesArr = Object.values(rates);
let id = 0;
for (let i = 0; i < keysArr.length; i++) {
let temp = {};
temp['key'] = id++;
temp['name'] = keysArr[i];
temp['currency'] = valuesArr[i];
temp['fullName'] = currencies[keysArr[i]];
responseRates.push(temp);
}
timestamp = new Date(timestamp * 1000) + "";
this.setState({
rates: responseRates,
lastUpdated: timestamp,
bank: info,
});
} catch (err) {
console.log(err);
}
}
render() {
return (
<View>
<Header />
<LatestStatus dateTime={this.state.lastUpdated} bank={this.state.bank} />
<ScrollView>
{
this.state.rates.map(item => <Row key={item.key} dataItem={item} />)
}
</ScrollView>
</View>
);
}
}