diff --git a/src/modules/login/Login.js b/src/modules/login/Login.js index 51f226b..cb0ebbd 100644 --- a/src/modules/login/Login.js +++ b/src/modules/login/Login.js @@ -78,7 +78,7 @@ export default class Login extends Component { {this.emailInput()} {this.passwordInput()} {this.showError()} - {this.showSpinner()} @@ -132,7 +132,6 @@ const styles = StyleSheet.create({ }, loginButton: { marginVertical: 16, - marginHorizontal: 16 }, errorBox: { marginVertical: 16, diff --git a/src/modules/membership/MembershipContainer.js b/src/modules/membership/MembershipContainer.js index 51ef01e..bd1b98d 100644 --- a/src/modules/membership/MembershipContainer.js +++ b/src/modules/membership/MembershipContainer.js @@ -3,7 +3,7 @@ import {connect} from "react-redux"; import Membership from "./Membership"; import MembershipProof from "./MembershipProof"; -import { requestUserData } from "../../actions"; +import { requestUserData, logout } from "../../actions"; class MembershipContainer extends React.Component { constructor(props) { @@ -17,17 +17,17 @@ class MembershipContainer extends React.Component { } } - componentDidMount() { - this.fetchUser(); - } - componentWillReceiveProps(nextProps) { if(this.state.isAuthenticated !== nextProps.isAuthenticated) { this.setState({isAuthenticated: nextProps.isAuthenticated}) } if(this.state.userToken !== nextProps.userToken) { - this.setState({userToken: nextProps.userToken}); - this.fetchUser(); + this.setState({userToken: nextProps.userToken}, () => { + if(nextProps.userToken) { + this.fetchUser(); + } + }); + } if(this.state.user !== nextProps.user) { this.setState({user: nextProps.user}) @@ -35,7 +35,6 @@ class MembershipContainer extends React.Component { } fetchUser = () => { - if (!this.state.userToken) { return; } this.props.requestUserData(this.state.userToken) }; @@ -43,11 +42,20 @@ class MembershipContainer extends React.Component { this.props.onLoginPress(); }; + onLogoutPress = () => { + this.props.logout(); + this.props.logoutNavigate(); + }; + render() { if (this.state.user) { - return () + return ; } - return () + return ; } } @@ -58,5 +66,5 @@ export default connect( userToken: state.userToken, user: state.user, }), - { requestUserData } + { requestUserData, logout } )(MembershipContainer); diff --git a/src/modules/membership/MembershipProof.js b/src/modules/membership/MembershipProof.js index c8378f7..262cdcb 100644 --- a/src/modules/membership/MembershipProof.js +++ b/src/modules/membership/MembershipProof.js @@ -1,6 +1,6 @@ import React, {Component} from 'react'; -import {StyleSheet, Platform, RefreshControl} from "react-native"; -import {Card, CardItem, Text, Content} from 'native-base'; +import {StyleSheet, Platform, RefreshControl, View} from "react-native"; +import {Button, Card, CardItem, Text, Content} from 'native-base'; export default class MembershipProof extends Component { constructor(props) { @@ -18,23 +18,27 @@ export default class MembershipProof extends Component { } validTo() { - if (this.state.user.last_membership.membership_type == 'lifelong') { + if (this.state.user.last_membership.membership_type === 'lifelong') { return 'Livsvarig' } return this.state.user.last_membership.end_date; } - statusText() { + membershipStatus() { if (!this.state.user.is_member) { if (!this.state.user.last_membership) { - return 'Ikke medlem' + // TODO: purchase membership button + return Ikke medlem } - return 'Utløpt' + + return Utløpt } + if (this.state.user.is_volunteer) { - return 'Aktiv' + return Aktiv frivillig } - return 'Medlem' + + return Medlem } fetchUser = () => { @@ -69,10 +73,16 @@ export default class MembershipProof extends Component { {this.state.user.first_name} {this.state.user.last_name} - {this.statusText()} + {this.membershipStatus()} - Gyldig til: {this.validTo()} + + Gyldig til: + {this.validTo()} + + + + @@ -87,4 +97,43 @@ const styles = StyleSheet.create({ fontSize: 20, fontWeight: 'bold', }, + logoutButton: { + marginTop: 16, + }, + valid: { + backgroundColor: '#5cb85c', + flex: 1, + marginHorizontal: -16, + padding: 16 + }, + validText: { + color: 'white', + textAlign: 'center', + fontSize: 24 + }, + expired: { + backgroundColor: '#62B1F6', + flex: 1, + marginHorizontal: -16, + padding: 16 + }, + expiredText: { + color: 'white', + textAlign: 'center', + fontSize: 24 + }, + notMember: { + flex: 1, + marginHorizontal: -16, + padding: 16 + }, + notMemberText: { + color: 'white', + textAlign: 'center', + fontSize: 24 + }, + validToValue: { + fontWeight: 'bold', + fontSize: 18, + }, }); \ No newline at end of file diff --git a/src/screens/MembershipScreen.js b/src/screens/MembershipScreen.js index 8188632..4cd2108 100644 --- a/src/screens/MembershipScreen.js +++ b/src/screens/MembershipScreen.js @@ -14,9 +14,13 @@ export default class MembershipScreen extends Component { this.props.navigation.navigate('Login'); }; + logoutNavigate = () => { + this.props.navigation.navigate('Membership'); + }; + render() { return ( - + ) } } \ No newline at end of file