diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/PaymentInfo.tsx b/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/PaymentInfo.tsx new file mode 100644 index 00000000000..29b3156af51 --- /dev/null +++ b/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/PaymentInfo.tsx @@ -0,0 +1,60 @@ +import React, { useEffect } from 'react'; +import { SubscribeForm } from 'app/components/SubscribeForm'; +import { useOvermind } from 'app/overmind'; +import { Card } from './Card'; +import { Title, Subheading } from '../elements'; +import { Container, CustomSubHeading } from './elements'; + +export const PaymentInfo: React.FunctionComponent = () => { + const { + state: { + preferences: { + paymentDetailError, + paymentDetails: paymentDetailsFromHooks, + isLoadingPaymentDetails, + }, + }, + actions: { + preferences: { paymentDetailsRequested, paymentDetailsUpdated }, + }, + } = useOvermind(); + useEffect(() => { + paymentDetailsRequested(); + }, [paymentDetailsRequested]); + + const updatePaymentDetails = ({ token }) => { + paymentDetailsUpdated({ token }); + }; + + const paymentDetails = () => { + const { last4, name, brand } = paymentDetailsFromHooks; + if (paymentDetailError) + return
An error occurred: {paymentDetailError}
; + + return ( +
+ Current card + + + Update card info + +
+ ); + }; + + return ( + + Payment Info + {isLoadingPaymentDetails ? ( +
Loading payment details...
+ ) : ( + paymentDetails() + )} +
+ ); +}; diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/elements.ts b/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/elements.ts index 5902ceb40f1..bb3118b46e3 100644 --- a/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/elements.ts +++ b/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/elements.ts @@ -1,6 +1,11 @@ import styled from 'styled-components'; +import { Subheading } from '../elements'; export const Container = styled.div` font-weight: 400; color: rgba(255, 255, 255, 0.6); `; + +export const CustomSubHeading = styled(Subheading)` + margin-top: 2rem; +`; diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/index.ts b/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/index.ts new file mode 100644 index 00000000000..fc6e6a17d3e --- /dev/null +++ b/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/index.ts @@ -0,0 +1,3 @@ +import { PaymentInfo } from './PaymentInfo'; + +export default PaymentInfo; diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/index.tsx b/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/index.tsx deleted file mode 100644 index 44a1c2313c8..00000000000 --- a/packages/app/src/app/pages/common/Modals/PreferencesModal/PaymentInfo/index.tsx +++ /dev/null @@ -1,65 +0,0 @@ -import React from 'react'; -import { inject, observer } from 'app/componentConnectors'; -import { SubscribeForm } from 'app/components/SubscribeForm'; -import { Card } from './Card'; -import { Title, Subheading } from '../elements'; -import { Container } from './elements'; - -interface Props { - store: any; - signals: any; -} - -class PaymentInfoComponent extends React.Component { - componentDidMount() { - this.props.signals.preferences.paymentDetailsRequested(); - } - - updatePaymentDetails = ({ token }) => { - this.props.signals.preferences.paymentDetailsUpdated({ token }); - }; - - paymentDetails = () => { - const { preferences } = this.props.store; - - if (preferences.paymentDetailError) - return
An error occurred: {preferences.paymentDetailError}
; - - return ( -
- Current card - - - Update card info - -
- ); - }; - - render() { - const { preferences } = this.props.store; - return ( - - Payment Info - {preferences.isLoadingPaymentDetails ? ( -
Loading payment details...
- ) : ( - this.paymentDetails() - )} -
- ); - } -} - -export const PaymentInfo = inject('store', 'signals')( - observer(PaymentInfoComponent) -); diff --git a/packages/app/src/app/pages/common/Modals/PreferencesModal/index.tsx b/packages/app/src/app/pages/common/Modals/PreferencesModal/index.tsx index 3eeb4096875..0b532081e94 100644 --- a/packages/app/src/app/pages/common/Modals/PreferencesModal/index.tsx +++ b/packages/app/src/app/pages/common/Modals/PreferencesModal/index.tsx @@ -17,7 +17,7 @@ import { Appearance } from './Appearance'; import { EditorSettings } from './EditorPageSettings/EditorSettings'; import { PreviewSettings } from './EditorPageSettings/PreviewSettings'; import { CodeFormatting } from './CodeFormatting'; -import { PaymentInfo } from './PaymentInfo'; +import PaymentInfo from './PaymentInfo'; import { Integrations } from './Integrations'; import { Badges } from './Badges'; import { Experiments } from './Experiments';