import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; import { defineMessages, intlShape, FormattedMessage } from 'react-intl'; import ReactTooltip from 'react-tooltip'; import moment from 'moment'; import Loader from '../../ui/Loader'; import Button from '../../ui/Button'; import Infobox from '../../ui/Infobox'; import Link from '../../ui/Link'; import SubscriptionForm from '../../../containers/ui/SubscriptionFormScreen'; const messages = defineMessages({ headline: { id: 'settings.account.headline', defaultMessage: '!!!Account', }, headlineSubscription: { id: 'settings.account.headlineSubscription', defaultMessage: '!!!Your Subscription', }, headlineUpgrade: { id: 'settings.account.headlineUpgrade', defaultMessage: '!!!Upgrade your Account', }, headlineInvoices: { id: 'settings.account.headlineInvoices', defaultMessage: '!!Invoices', }, manageSubscriptionButtonLabel: { id: 'settings.account.manageSubscription.label', defaultMessage: '!!!Manage your subscription', }, accountTypeBasic: { id: 'settings.account.accountType.basic', defaultMessage: '!!!Basic Account', }, accountTypePremium: { id: 'settings.account.accountType.premium', defaultMessage: '!!!Premium Supporter Account', }, accountEditButton: { id: 'settings.account.account.editButton', defaultMessage: '!!!Edit Account', }, invoiceDownload: { id: 'settings.account.invoiceDownload', defaultMessage: '!!!Download', }, userInfoRequestFailed: { id: 'settings.account.userInfoRequestFailed', defaultMessage: '!!!Could not load user information', }, tryReloadUserInfoRequest: { id: 'settings.account.tryReloadUserInfoRequest', defaultMessage: '!!!Try again', }, miningActive: { id: 'settings.account.mining.active', defaultMessage: '!!!You are right now performing {hashes} calculations per second.', }, miningThankYou: { id: 'settings.account.mining.thankyou', defaultMessage: '!!!Thank you for supporting Franz with your processing power.', }, miningMoreInfo: { id: 'settings.account.mining.moreInformation', defaultMessage: '!!!Get more information', }, cancelMining: { id: 'settings.account.mining.cancel', defaultMessage: '!!!Cancel mining', }, }); @observer export default class AccountDashboard extends Component { static propTypes = { user: MobxPropTypes.observableObject.isRequired, orders: MobxPropTypes.arrayOrObservableArray.isRequired, hashrate: PropTypes.number.isRequired, isLoading: PropTypes.bool.isRequired, isLoadingOrdersInfo: PropTypes.bool.isRequired, isLoadingPlans: PropTypes.bool.isRequired, isCreatingPaymentDashboardUrl: PropTypes.bool.isRequired, userInfoRequestFailed: PropTypes.bool.isRequired, retryUserInfoRequest: PropTypes.func.isRequired, openDashboard: PropTypes.func.isRequired, openExternalUrl: PropTypes.func.isRequired, onCloseSubscriptionWindow: PropTypes.func.isRequired, stopMiner: PropTypes.func.isRequired, }; static contextTypes = { intl: intlShape, }; render() { const { user, orders, hashrate, isLoading, isCreatingPaymentDashboardUrl, openDashboard, openExternalUrl, isLoadingOrdersInfo, isLoadingPlans, userInfoRequestFailed, retryUserInfoRequest, onCloseSubscriptionWindow, stopMiner, } = this.props; const { intl } = this.context; return (
{intl.formatMessage(messages.headline)}
{isLoading && ( )} {!isLoading && userInfoRequestFailed && (
{intl.formatMessage(messages.userInfoRequestFailed)}
)} {!userInfoRequestFailed && (
{!isLoading && (
{user.isPremium && ( )}

{`${user.firstname} ${user.lastname}`}

{user.organization && `${user.organization}, `} {user.email}
{!user.isPremium && ( {intl.formatMessage(messages.accountTypeBasic)} )} {user.isPremium && ( {intl.formatMessage(messages.accountTypePremium)} )}
{intl.formatMessage(messages.accountEditButton)} {user.emailValidated}
)} {user.isSubscriptionOwner && ( isLoadingOrdersInfo ? ( ) : (
{orders.length > 0 && (

{intl.formatMessage(messages.headlineSubscription)}

{orders[0].name} {orders[0].price}

{intl.formatMessage(messages.headlineInvoices)}

{orders.map(order => ( ))}
{moment(order.date).format('DD.MM.YYYY')}
)}
) )} {user.isMiner && (

{intl.formatMessage(messages.headlineSubscription)}

{intl.formatMessage(messages.miningThankYou)}

{hashrate.toFixed(2)}, }} tagName="p" />

{intl.formatMessage(messages.miningMoreInfo)}

)} {!user.isPremium && !user.isMiner && ( isLoadingPlans ? ( ) : (

{intl.formatMessage(messages.headlineUpgrade)}

) )}
)}
); } }