From d34f811e23ea1b1f24226517d0d50258e2241098 Mon Sep 17 00:00:00 2001 From: punitcodes Date: Mon, 28 Dec 2020 12:00:44 +0530 Subject: [PATCH] ask user email before payment iframe --- .../OrderInitialFiat/OrderInitialFiat.js | 72 +++++++++++++++---- .../misc/Anouncement/Anouncement.js | 4 +- 2 files changed, 59 insertions(+), 17 deletions(-) diff --git a/src/components/Order/OrderMain/OrderState/OrderInitial/OrderInitialFiat/OrderInitialFiat.js b/src/components/Order/OrderMain/OrderState/OrderInitial/OrderInitialFiat/OrderInitialFiat.js index 1dbb42ac8..5e3fbb53d 100644 --- a/src/components/Order/OrderMain/OrderState/OrderInitial/OrderInitialFiat/OrderInitialFiat.js +++ b/src/components/Order/OrderMain/OrderState/OrderInitial/OrderInitialFiat/OrderInitialFiat.js @@ -1,11 +1,13 @@ import React, { Component } from 'react'; import { I18n } from 'react-i18next'; +import axios from 'axios'; import Checkbox from '../Checkbox/Checkbox'; import styles from '../OrderInitial.scss'; import { Helmet } from 'react-helmet'; import styled from '@emotion/styled'; import OrderPreReleased from '../../OrderPreReleased/OrderPreReleased'; import OrderFailed from '../../OrderFailure/OrderFailure'; +import config from 'Config'; const PaymentNewTabText = styled.h4` text-align: center; @@ -19,6 +21,17 @@ const PaymentIframeContainer = styled.div` } `; +const UserEmail = styled.div` + input { + width: 100%; + max-width: 24rem; + padding: 0.75rem; + border-radius: 4px; + border: 1px solid #d2d2d2; + } + margin-bottom: 1.6rem; +`; + const Spinner = styled.div` position: absolute; top: 50%; @@ -34,7 +47,11 @@ class OrderInitial extends Component { enablePayment: true, showPaymentIFrame: false, paymentStatus: 'pending', + userEmail: '', }; + + this.handleEmailChange = this.handleEmailChange.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); } shouldComponentUpdate(nextProps, nextState) { @@ -51,13 +68,7 @@ class OrderInitial extends Component { } tooglePaymentIFrame() { - this.setState({ - showPaymentIFrame: !this.state.showPaymentIFrame, - }); - - if (!localStorage.termsAgreed) { - localStorage.setItem('termsAgreed', JSON.stringify({ on: Date.now(), order: this.props.order.unique_reference })); - } + this.setState(prevState => ({ showPaymentIFrame: !prevState.showPaymentIFrame })); } toggleEnablePayment = status => { @@ -82,13 +93,31 @@ class OrderInitial extends Component { } }; + handleEmailChange(e) { + this.setState({ userEmail: e.target.value }); + } + + handleSubmit(e) { + e.preventDefault(); + + axios.put(`${config.API_BASE_URL}/users/me/`, { email: this.state.userEmail }).then(() => { + localStorage.setItem( + 'termsAgreed', + JSON.stringify({ on: Date.now(), order: this.props.order.unique_reference, email: this.state.userEmail }) + ); + }); + + this.props.order.payment_url && this.state.enablePayment && this.tooglePaymentIFrame(); + } + componentDidMount() { + const { email } = JSON.parse(localStorage.termsAgreed || '{}'); const safechargeStatus = getUrlPram('ppp_status'); if (!_.isEmpty(safechargeStatus)) { $('body').hide(); } - if (localStorage.termsAgreed) this.setState({ showPaymentIFrame: true }); + if (email) this.setState({ showPaymentIFrame: true }); window.addEventListener('message', this.iFrameMessage); } @@ -150,7 +179,7 @@ class OrderInitial extends Component { {t => (
-
+
{props.time !== '00:00' && (

{t('order.initial1')}:{' '} @@ -166,23 +195,36 @@ class OrderInitial extends Component {

+ + + + + - { - props.order.payment_url && this.state.enablePayment && this.tooglePaymentIFrame(); - }} >