import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { I18nManager, Keyboard, StyleSheet, Text, TouchableOpacity, TouchableWithoutFeedback, View } from 'react-native'; import { Icon } from '@rneui/themed'; import { BlueLoading, BlueSpacing, BlueText } from '../../BlueComponents'; import Azteco from '../../class/azteco'; import presentAlert from '../../components/Alert'; import Button from '../../components/Button'; import loc from '../../loc'; import { StorageContext } from '../../components/Context/StorageProvider'; const styles = StyleSheet.create({ loading: { flex: 1, paddingTop: 20, }, root: { alignItems: 'center', alignContent: 'flex-end', marginTop: 66, }, code: { color: '#0c2550', fontSize: 20, marginTop: 20, marginBottom: 90, }, selectWallet1: { marginBottom: 24, alignItems: 'center', }, selectTouch: { flexDirection: 'row', alignItems: 'center', }, selectText: { color: '#9aa0aa', fontSize: 14, marginRight: 8, }, selectWallet2: { flexDirection: 'row', alignItems: 'center', marginVertical: 4, }, selectWalletLabel: { color: '#0c2550', fontSize: 14, }, }); export default class AztecoRedeem extends Component { static contextType = StorageContext; state = { isLoading: true }; constructor(props, context) { super(props); /** @type {AbstractWallet} */ let toWallet = null; const wallets = context.wallets; if (wallets.length === 0) { presentAlert({ message: loc.azteco.errorBeforeRefeem }); return props.navigation.goBack(null); } else { if (wallets.length > 0) { toWallet = wallets[0]; } this.state = { c1: props.route.params.c1, c2: props.route.params.c2, c3: props.route.params.c3, c4: props.route.params.c4, isLoading: false, toWallet, renderWalletSelectionButtonHidden: false, }; } } async componentDidMount() { console.log('AztecoRedeem - componentDidMount'); } onWalletSelect = toWallet => { this.setState({ toWallet }, () => { this.props.navigation.pop(); }); }; redeem = async () => { this.setState({ isLoading: true }); const address = await this.state.toWallet.getAddressAsync(); const result = await Azteco.redeem([this.state.c1, this.state.c2, this.state.c3, this.state.c4], address); if (!result) { presentAlert({ message: loc.azteco.errorSomething }); this.setState({ isLoading: false }); } else { this.props.navigation.pop(); // remote because we want to refetch from server tx list and balance presentAlert({ message: loc.azteco.success }); } }; renderWalletSelectionButton = () => { if (this.state.renderWalletSelectionButtonHidden) return; return ( {!this.state.isLoading && ( this.props.navigation.navigate('SelectWallet', { onWalletSelect: this.onWalletSelect, availableWallets: this.context.wallets, }) } > {loc.azteco.redeem} )} this.props.navigation.navigate('SelectWallet', { onWalletSelect: this.onWalletSelect, availableWallets: this.context.wallet, }) } > {this.state.toWallet.getLabel()} ); }; render() { if (this.state.isLoading || typeof this.state.toWallet === 'undefined') { return ( ); } return ( {loc.azteco.codeIs} {this.state.c1}-{this.state.c2}-{this.state.c3}-{this.state.c4} {this.renderWalletSelectionButton()}