From fd0b53c67cd49271dddd7ed27d17ba6d6ffa7f2b Mon Sep 17 00:00:00 2001 From: Angus McLeod Date: Mon, 25 Jun 2018 18:37:55 +1000 Subject: [PATCH] Properly validate email --- .../discourse/components/stripe-card.js.es6 | 17 +++++-- .../templates/components/donation-list.hbs | 46 +++++++++++-------- .../templates/components/stripe-card.hbs | 8 +++- assets/stylesheets/discourse-donations.scss | 21 +++++---- 4 files changed, 59 insertions(+), 33 deletions(-) diff --git a/assets/javascripts/discourse/components/stripe-card.js.es6 b/assets/javascripts/discourse/components/stripe-card.js.es6 index d02b917..2eb2611 100644 --- a/assets/javascripts/discourse/components/stripe-card.js.es6 +++ b/assets/javascripts/discourse/components/stripe-card.js.es6 @@ -2,6 +2,7 @@ import { ajax } from 'discourse/lib/ajax'; import { getRegister } from 'discourse-common/lib/get-owner'; import { formatAnchor, zeroDecimalCurrencies } from '../lib/donation-utilities'; import { default as computed } from 'ember-addons/ember-computed-decorators'; +import { emailValid } from "discourse/lib/utilities"; export default Ember.Component.extend({ result: [], @@ -94,9 +95,19 @@ export default Ember.Component.extend({ return amount; }, - @computed('currentUser', 'email') - userReady(currentUser, email) { - return currentUser || email; + @computed('email') + emailValid(email) { + return emailValid(email); + }, + + @computed('email', 'emailValid') + showEmailError(email, emailValid) { + return email && email.length > 3 && !emailValid; + }, + + @computed('currentUser', 'emailValid') + userReady(currentUser, emailValid) { + return currentUser || emailValid; }, @computed('userReady', 'stripeReady') diff --git a/assets/javascripts/discourse/templates/components/donation-list.hbs b/assets/javascripts/discourse/templates/components/donation-list.hbs index fba86c4..ae2706e 100644 --- a/assets/javascripts/discourse/templates/components/donation-list.hbs +++ b/assets/javascripts/discourse/templates/components/donation-list.hbs @@ -1,23 +1,29 @@ -{{#if hasCharges}} -

{{i18n 'discourse_donations.donations.charges'}}

- -{{/if}} - {{#if hasSubscriptions}} -

{{i18n 'discourse_donations.donations.subscriptions'}}

- + +{{/if}} + +{{#if hasCharges}} +
+
{{i18n 'discourse_donations.donations.charges'}}
+ +
{{/if}} diff --git a/assets/javascripts/discourse/templates/components/stripe-card.hbs b/assets/javascripts/discourse/templates/components/stripe-card.hbs index e1ffa1e..a23c7fc 100644 --- a/assets/javascripts/discourse/templates/components/stripe-card.hbs +++ b/assets/javascripts/discourse/templates/components/stripe-card.hbs @@ -50,7 +50,7 @@
{{#if stripeError}} -
{{stripeError}}
+
{{stripeError}}
{{/if}}
@@ -60,7 +60,11 @@
{{text-field value=email}} -
{{i18n 'discourse_donations.email_instructions'}}
+ {{#if showEmailError}} +
{{i18n 'user.email.invalid'}}
+ {{else}} +
{{i18n 'discourse_donations.email_instructions'}}
+ {{/if}}
diff --git a/assets/stylesheets/discourse-donations.scss b/assets/stylesheets/discourse-donations.scss index 23c0263..878b905 100644 --- a/assets/stylesheets/discourse-donations.scss +++ b/assets/stylesheets/discourse-donations.scss @@ -28,7 +28,7 @@ div.stripe-errors { margin: 0; } - .stripe-error { + .error, .stripe-error { margin-top: 5px; color: $danger; } @@ -56,17 +56,22 @@ div.stripe-errors { } .body-page .donations-page-donations { - margin-bottom: 40px; + margin-bottom: 20px; .donation-list { - ul { - margin-left: 0; - list-style: none; + .subscription-list, .charge-list { + margin-bottom: 10px; + display: inline-block; - li.underline { - border-bottom: 1px solid $primary-medium; - display: inline-block; + > ul { + margin: 10px 0; + list-style: none; } } + + .underline { + border-bottom: 1px solid $primary-medium; + display: inline-block; + } } }