import * as React from 'react'; import {FlatList, StyleSheet} from "react-native"; import {Avatar, Button, Card, Divider, List, withTheme} from 'react-native-paper'; import AuthenticatedScreen from "../../components/AuthenticatedScreen"; import {openBrowser} from "../../utils/WebBrowser"; import ConnectionManager from "../../managers/ConnectionManager"; import HeaderButton from "../../components/HeaderButton"; import i18n from 'i18n-js'; type Props = { navigation: Object, theme: Object, } type State = {} class ProfileScreen extends React.Component { state = {}; colors: Object; data: Object; flatListData: Array; constructor(props) { super(props); this.colors = props.theme.colors; this.onClickDisconnect = this.onClickDisconnect.bind(this); this.flatListData = [ {id: 0}, {id: 1}, {id: 2}, ] } componentDidMount() { const rightButton = this.getHeaderButtons.bind(this); this.props.navigation.setOptions({ headerRight: rightButton, }); } getHeaderButtons() { return ; } onClickDisconnect() { ConnectionManager.getInstance().disconnect() .then(() => { this.props.navigation.reset({ index: 0, routes: [{name: 'Main'}], }); }); } getScreen(data: Object) { this.data = data; return ( this.getRenderItem(item)} keyExtractor={item => item.id} data={this.flatListData} /> ) } getRenderItem({item}: Object) { switch (item.id) { case 0: return this.getPersonalCard(); case 1: return this.getClubCard(); case 2: return this.getMembershipCar(); } } getPersonalCard() { return ( } /> {i18n.t("profileScreen.personalInformation")} } /> } /> } /> } /> ); } getClubCard() { return ( } /> {this.getClubList(this.data.clubs)} ); } getMembershipCar() { return ( } /> {this.getMembershipItem(this.data.validity)} ); } getClubList(list: Array) { let dataset = []; for (let i = 0; i < list.length; i++) { dataset.push({name: list[i]}); } return ( } /> } keyExtractor={item => item.name} data={dataset} /> ); } getMembershipItem(state: boolean) { return ( } /> ); } getFieldValue(field: ?string) { return field !== null ? field : i18n.t("profileScreen.noData"); } render() { return ( this.getScreen(data)} /> ); } } const styles = StyleSheet.create({ card: { margin: 10, }, icon: { backgroundColor: 'transparent' }, editButton: { marginLeft: 'auto' } }); export default withTheme(ProfileScreen);