From 36d721eee0f4d7b99179560dc76126f06fe38061 Mon Sep 17 00:00:00 2001 From: Nikolai R Kristiansen Date: Wed, 9 Aug 2017 12:28:47 +0200 Subject: [PATCH] Style MembershipProof Fix crash on no previous memberships Add purchase button Minor style to Login and Membership components --- src/modules/login/Login.js | 29 +++-- src/modules/membership/Membership.js | 6 +- src/modules/membership/MembershipProof.js | 145 +++++++++++++++------- 3 files changed, 117 insertions(+), 63 deletions(-) diff --git a/src/modules/login/Login.js b/src/modules/login/Login.js index cb0ebbd..0d04b20 100644 --- a/src/modules/login/Login.js +++ b/src/modules/login/Login.js @@ -1,6 +1,7 @@ import React, {Component} from 'react'; import {StyleSheet, View} from 'react-native'; -import {Container, Header, Content, Form, Item, Input, Label, Spinner, Button, Text as NBText, Icon} from 'native-base'; +import {Body, Card, CardItem, Container, Header, Content, Form, Item, Input, Label, Spinner, Button, Text as NBText, + Icon} from 'native-base'; export default class Login extends Component { constructor(props) { @@ -73,15 +74,22 @@ export default class Login extends Component { render() { return ( - -
- {this.emailInput()} - {this.passwordInput()} - {this.showError()} - - {this.showSpinner()} -
+ + +
+ {this.emailInput()} + {this.passwordInput()} + {this.showError()} + + + + + + {this.showSpinner()} +
+
); @@ -123,7 +131,6 @@ const styles = StyleSheet.create({ container: { flex: 1, justifyContent: 'center', - backgroundColor: 'white' }, input: { width: 320, diff --git a/src/modules/membership/Membership.js b/src/modules/membership/Membership.js index 946937a..a0bd8c0 100644 --- a/src/modules/membership/Membership.js +++ b/src/modules/membership/Membership.js @@ -16,7 +16,7 @@ export default class Membership extends Component { Vi setter pris på felleskapet som er med på å bygge Chateau Neuf. DNS er en organisasjon av og for medlemmene. Derfor sørger vi for at det blir litt lettere å være student ved å ta en del av kaka for medlemmene våre. Med medlemskap får billigere inngang og servering på alt som skjer på Chateau Neuf. - + Vi gir medlemmer:{"\n"} @@ -30,10 +30,6 @@ export default class Membership extends Component { ) }; - onPurchasePress() { - Linking.openURL(Config.DUSKEN_PURCHASE_URL); - }; - onLoginPress = () => { this.props.onLoginPress(); }; diff --git a/src/modules/membership/MembershipProof.js b/src/modules/membership/MembershipProof.js index 262cdcb..0f84283 100644 --- a/src/modules/membership/MembershipProof.js +++ b/src/modules/membership/MembershipProof.js @@ -1,6 +1,7 @@ import React, {Component} from 'react'; -import {StyleSheet, Platform, RefreshControl, View} from "react-native"; -import {Button, Card, CardItem, Text, Content} from 'native-base'; +import {Linking, StyleSheet, Platform, RefreshControl, View} from "react-native"; +import {Button, Body, Card, CardItem, Text, Content} from 'native-base'; +import Config from 'react-native-config'; export default class MembershipProof extends Component { constructor(props) { @@ -17,34 +18,6 @@ export default class MembershipProof extends Component { } } - validTo() { - if (this.state.user.last_membership.membership_type === 'lifelong') { - return 'Livsvarig' - } - return this.state.user.last_membership.end_date; - } - - membershipStatus() { - if (!this.state.user.is_member) { - if (!this.state.user.last_membership) { - // TODO: purchase membership button - return Ikke medlem - } - - return Utløpt - } - - if (this.state.user.is_volunteer) { - return Aktiv frivillig - } - - return Medlem - } - - fetchUser = () => { - this.props.fetchUser() - }; - // fetchUser = () => { // this.props.fetchUser().then(() => { // this.setState({refreshing: false}); @@ -65,29 +38,103 @@ export default class MembershipProof extends Component { // />) // } + membershipValidTo() { + if( !this.state.user.last_membership) { + return; + } + + let validTo = this.state.user.last_membership.end_date; + if (this.state.user.last_membership.membership_type === 'lifelong') { + validTo = 'Livsvarig' + } + + return ( + + + Gyldig til: + {validTo} + + + ) + } + + membershipStatus() { + if (!this.state.user.is_member) { + // TODO: purchase membership button + if ( !this.state.user.last_membership ) { + return ( + + + Ikke medlem + + ) + } + + return Utløpt + } + + let statusText = 'Medlem'; + if (this.state.user.is_volunteer) { + statusText = 'Aktiv frivillig'; + } + + return {statusText} + } + + purchaseButton() { + if (this.state.user.is_member) { + return; + } + return + + + + + } + + fetchUser = () => { + this.props.fetchUser() + }; + render() { return ( - + + + {this.membershipName()} + {this.membershipStatus()} + {this.purchaseButton()} + {this.membershipValidTo()} + - {this.state.user.first_name} {this.state.user.last_name} - - - {this.membershipStatus()} - - - - Gyldig til: - {this.validTo()} - - - - + + + ) }; + + membershipName() { + let name = `${this.state.user.first_name} ${this.state.user.last_name}`; + if(name === ' ') { + name = this.state.user.email; + } + return + {name} + + } } const styles = StyleSheet.create({ @@ -97,9 +144,6 @@ const styles = StyleSheet.create({ fontSize: 20, fontWeight: 'bold', }, - logoutButton: { - marginTop: 16, - }, valid: { backgroundColor: '#5cb85c', flex: 1, @@ -123,6 +167,7 @@ const styles = StyleSheet.create({ fontSize: 24 }, notMember: { + backgroundColor: '#62B1F6', flex: 1, marginHorizontal: -16, padding: 16 @@ -136,4 +181,10 @@ const styles = StyleSheet.create({ fontWeight: 'bold', fontSize: 18, }, + purchaseButton: { + marginTop: 16, + }, + logoutButton: { + marginVertical: 8, + }, }); \ No newline at end of file