diff --git a/src/js/components/membershipForm.js b/src/js/components/membershipForm.js
index cf31414..535c621 100644
--- a/src/js/components/membershipForm.js
+++ b/src/js/components/membershipForm.js
@@ -10,32 +10,32 @@ var MembershipInfoForm = require('./membershipInfoForm.js');
module.exports = React.createClass({
getInitialState() {
return {
- userInfo: null,
+ userInfo: null,
infoFormSuccess: false,
- paymentSuccess: false
+ paymentSuccess: false
};
},
handlePaymentSuccess() {
- this.setState({paymentSuccess: true});
+ this.setState({ paymentSuccess: true });
},
handleInfoFormSuccess(userInfo) {
this.setState({
- userInfo: userInfo,
+ userInfo: userInfo,
infoFormSuccess: true,
});
},
render() {
if(!this.state.infoFormSuccess) {
- return
+ return
} else if (!this.state.paymentSuccess) {
return (
+ userInfo = { this.state.userInfo }
+ onPaymentSuccess = { this.handlePaymentSuccess }>
)
} else {
diff --git a/src/js/components/membershipInfoForm.js b/src/js/components/membershipInfoForm.js
index 3807cf8..af4c531 100644
--- a/src/js/components/membershipInfoForm.js
+++ b/src/js/components/membershipInfoForm.js
@@ -10,10 +10,10 @@ var api = require('../api');
var StripeCheckout = require('./stripeCheckout.js');
var fieldNameTranslations = {
- email: {fi: "Sähköpostiosoite"},
- name: {fi: "Koko nimi"},
- handle: {fi: "Slack-käyttäjätunnus"},
- residence: {fi: "Paikkakunta"}
+ email: { fi: "Sähköpostiosoite" },
+ name: { fi: "Koko nimi "},
+ handle: { fi: "Slack-käyttäjätunnus "},
+ residence: { fi: "Paikkakunta" }
}
function validateEmail(email) {
@@ -25,12 +25,12 @@ module.exports = React.createClass({
getInitialState() {
return {
- email: '',
- name: '',
- handle: '',
+ email: '',
+ name: '',
+ handle: '',
residence: '',
- sending: false,
- errors: []
+ sending: false,
+ errors: []
};
},
onSubmit(e) {
@@ -43,9 +43,9 @@ module.exports = React.createClass({
var userInfo = {
- email: this.state.email,
- name: this.state.name,
- handle: this.state.handle,
+ email: this.state.email,
+ name: this.state.name,
+ handle: this.state.handle,
residence: this.state.residence,
}
@@ -56,7 +56,7 @@ module.exports = React.createClass({
if(userInfoErrors.length){
this.setState({
sending: false,
- errors: userInfoErrors
+ errors: userInfoErrors
});
console.log("errorei");
} else {
@@ -64,7 +64,7 @@ module.exports = React.createClass({
}
},
handleError(err) {
- this.setState({error: err, sending: false});
+ this.setState({ error: err, sending: false });
},
onChange(e) {
if(e.target.value === this.state[e.target.name]) {
@@ -81,18 +81,18 @@ module.exports = React.createClass({
var foundErrors = [];
if (!this.state.name)
- foundErrors.push({field: 'name', type: 'missing'});
+ foundErrors.push({ field: 'name', type: 'missing' });
if (!this.state.email)
- foundErrors.push({field: 'email', type: 'missing'});
+ foundErrors.push({ field: 'email', type: 'missing' });
else if(!validateEmail(this.state.email))
- foundErrors.push({field: 'email', type: 'invalid'});
+ foundErrors.push({ field: 'email', type: 'invalid' });
if (!this.state.handle)
- foundErrors.push({field: 'handle', type: 'missing'});
+ foundErrors.push({ field: 'handle', type: 'missing' });
if (!this.state.residence)
- foundErrors.push({field: 'residence', type: 'missing'});
+ foundErrors.push({ field: 'residence', type: 'missing' });
return foundErrors;
@@ -100,10 +100,10 @@ module.exports = React.createClass({
render() {
var formClasses = classSet({
- 'form': true,
+ 'form': true,
'membership-form': true,
- 'has-error': this.state.errors.length,
- 'sending': this.state.sending
+ 'has-error': this.state.errors.length,
+ 'sending': this.state.sending
});
@@ -117,9 +117,9 @@ module.exports = React.createClass({
fieldsWithErrors.push(err.field);
if(err.type == 'missing') {
- feedbackText = `${fieldNameTranslations[err.field].fi} on pakollinen.`
+ feedbackText = `${ fieldNameTranslations[err.field].fi } on pakollinen.`
} else if (err.type == 'invalid') {
- feedbackText = `${fieldNameTranslations[err.field].fi} on virheellinen.`
+ feedbackText = `${ fieldNameTranslations[err.field].fi } on virheellinen.`
}
feedbackMessages.push((
{ feedbackText }
))
@@ -127,7 +127,7 @@ module.exports = React.createClass({
/* generate input fields */
- var fieldNames = ['name', 'email', 'handle', 'residence'];
+ var fieldNames = ['name', 'email', 'handle', 'residence'];
var inputFields = [];
fieldNames.forEach((fieldName) => {
diff --git a/src/js/components/stripeCheckout.js b/src/js/components/stripeCheckout.js
index 5d63472..78728a0 100644
--- a/src/js/components/stripeCheckout.js
+++ b/src/js/components/stripeCheckout.js
@@ -33,75 +33,51 @@ module.exports = React.createClass({
};
},
- setOutcome(result) {
- if (result.token) {
- this.setState({
- error: null
- })
-
- request.post(api('membership'), {
- stripeToken: result.token.id,
- email: this.props.payerEmail
- })
- .then(() => {
- this.setState({
- sending: false
- });
- this.props.onPaymentSuccess();
- })
- .catch((e) => {
- //TODO :errorhandling
- });
-
- } else if (result.error) {
- console.log(result.error);
- this.setState({
- error: stripeErrMessages[result.error.code] || result.error.message,
- sending: false
- });
- }
- },
-
- onSubmit(e) {
- e.preventDefault();
-
+ onSubmit(token) {
this.setState({
error: null,
sending: true
});
- var form = document.querySelector('form');
- var extraDetails = {
- name: this.props.payerName,
- };
- },
-
- onToken(t) {
- console.log(t);
+ request.post(api('membership'), {
+ stripeToken: token.id,
+ email: this.props.payerEmail
+ })
+ .then(() => {
+ this.setState({
+ sending: false
+ });
+ this.props.onPaymentSuccess();
+ })
+ .catch((e) => {
+ this.setState({
+ sending: false,
+ error: e
+ });
+ });
},
render() {
- var feedbackMessage;
-
- if(this.state.error) {
- feedbackMessage = (
-
- {this.state.error}
-
- );
+ if (this.state.error) {
+ return Virhe maksaessa! Ota yhteyttä info@koodiklinikka.fi
+ } else if (this.state.sending) {
+ return
+ } else {
+ return (
+
+ )
}
-
- return (
-
- )
}
});
diff --git a/src/styles/style.styl b/src/styles/style.styl
index e7d949c..fe3b597 100644
--- a/src/styles/style.styl
+++ b/src/styles/style.styl
@@ -111,6 +111,10 @@ section:first-child
&:first-child
margin-top 0
+.loader
+ background transparent url('../images/ajax-loader.gif') no-repeat center center
+ width 28px
+ height 28px
.form
.btn
@@ -118,7 +122,6 @@ section:first-child
border-bottom 2px solid #117280
color rgba(255, 255, 255, 0.9)
.loader
- background transparent url('../images/ajax-loader.gif') no-repeat center center
display none
&.sending
.btn
@@ -146,7 +149,6 @@ section:first-child
position absolute
right 9px
top 9px
- background transparent url('../images/ajax-loader.gif') no-repeat center center
&.sending
.loader
display block