// @flow import * as React from 'react'; import {Avatar, Button, Card, RadioButton} from "react-native-paper"; import {FlatList, StyleSheet, View} from "react-native"; import ConnectionManager from "../../../managers/ConnectionManager"; import LoadingConfirmDialog from "../../Dialogs/LoadingConfirmDialog"; import ErrorDialog from "../../Dialogs/ErrorDialog"; import i18n from 'i18n-js'; type Props = { teams: Array, onVoteSuccess: Function, onVoteError: Function, } type State = { selectedTeam: string, voteDialogVisible: boolean, errorDialogVisible: boolean, currentError: number, } export default class VoteSelect extends React.PureComponent { state = { selectedTeam: "none", voteDialogVisible: false, errorDialogVisible: false, currentError: 0, }; onVoteSelectionChange = (team: string) => this.setState({selectedTeam: team}); voteKeyExtractor = (item: Object) => item.id.toString(); voteRenderItem = ({item}: Object) => ; showVoteDialog = () => this.setState({voteDialogVisible: true}); onVoteDialogDismiss = () => this.setState({voteDialogVisible: false,}); onVoteDialogAccept = async () => { return new Promise((resolve, reject) => { ConnectionManager.getInstance().authenticatedRequest( "elections/vote", {"team": parseInt(this.state.selectedTeam)}) .then(() => { this.onVoteDialogDismiss(); this.props.onVoteSuccess(); resolve(); }) .catch((error: number) => { this.onVoteDialogDismiss(); this.showErrorDialog(error); resolve(); }); }); }; showErrorDialog = (error: number) => this.setState({ errorDialogVisible: true, currentError: error, }); onErrorDialogDismiss = () => { this.setState({errorDialogVisible: false}); this.props.onVoteError(); }; render() { return ( } /> {/*$FlowFixMe*/} ); } } const styles = StyleSheet.create({ card: { margin: 10, }, icon: { backgroundColor: 'transparent' }, });