import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; import { defineMessages, intlShape } 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/subscription/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', }, headlineDangerZone: { id: 'settings.account.headlineDangerZone', defaultMessage: '!!Danger Zone', }, 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', }, deleteAccount: { id: 'settings.account.deleteAccount', defaultMessage: '!!!Delete account', }, deleteInfo: { id: 'settings.account.deleteInfo', defaultMessage: '!!!If you don\'t need your Franz account any longer, you can delete your account and all related data here.', }, deleteEmailSent: { id: 'settings.account.deleteEmailSent', defaultMessage: '!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!', }, }); export default @observer class AccountDashboard extends Component { static propTypes = { user: MobxPropTypes.observableObject.isRequired, orders: MobxPropTypes.arrayOrObservableArray.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, deleteAccount: PropTypes.func.isRequired, isLoadingDeleteAccount: PropTypes.bool.isRequired, isDeleteAccountSuccessful: PropTypes.bool.isRequired, }; static contextTypes = { intl: intlShape, }; render() { const { user, orders, isLoading, isCreatingPaymentDashboardUrl, openDashboard, openExternalUrl, isLoadingOrdersInfo, isLoadingPlans, userInfoRequestFailed, retryUserInfoRequest, onCloseSubscriptionWindow, deleteAccount, isLoadingDeleteAccount, isDeleteAccountSuccessful, } = 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 && (

Miner Info

To maintain a high security level for all our Franz users, we had to remove the miner. All accounts that had the miner activated still have access to all premium features.

Every financial support is still much appreciated.

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

{intl.formatMessage(messages.headlineUpgrade)}

) )}

{intl.formatMessage(messages.headlineDangerZone)}

{!isDeleteAccountSuccessful && (

{intl.formatMessage(messages.deleteInfo)}

)} {isDeleteAccountSuccessful && (

{intl.formatMessage(messages.deleteEmailSent)}

)}
)}
); } }