import React, { Component } from 'react'; import { FlatList, TouchableOpacity, AsyncStorage, ActivityIndicator, View } from 'react-native'; import { SafeBlueArea, BlueNavigationStyle, BlueListItem } from '../../BlueComponents'; import PropTypes from 'prop-types'; import { Icon } from 'react-native-elements'; import { AppStorage } from '../../class'; import { FiatUnit } from '../../models/fiatUnit'; /** @type {AppStorage} */ let loc = require('../../loc'); let currency = require('../../currency'); export default class Currency extends Component { static navigationOptions = () => ({ ...BlueNavigationStyle(), title: loc.settings.currency, }); constructor(props) { super(props); this.state = { data: Object.values(FiatUnit), isSavingNewPreferredCurrency: false }; } async componentDidMount() { try { const preferredCurrency = await AsyncStorage.getItem(AppStorage.PREFERREDCURRENCY); if (preferredCurrency === null) { throw Error(); } this.setState({ selectedCurrency: JSON.parse(preferredCurrency) }); } catch (_error) { this.setState({ selectedCurrency: FiatUnit.USD }); } } renderItem = ({ item }) => { return ( { this.setState({ isSavingNewPreferredCurrency: true, selectedCurrency: item }, async () => { await AsyncStorage.setItem(AppStorage.PREFERREDCURRENCY, JSON.stringify(item)); await currency.startUpdater(true); this.setState({ isSavingNewPreferredCurrency: false }); }); }} > ) : ( ), } : { hideChevron: true })} /> ); }; render() { if (this.state.selectedCurrency !== null && this.state.selectedCurrency !== undefined) { return ( `${index}`} data={this.state.data} extraData={this.state.data} renderItem={this.renderItem} /> ); } return ( ); } } Currency.propTypes = { navigation: PropTypes.shape({ navigate: PropTypes.func, goBack: PropTypes.func, }), };