import { Component } from 'react'; import { observer } from 'mobx-react'; import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; import { Tooltip as ReactTooltip } from 'react-tooltip'; import { H1, H2 } from '../../ui/headline'; import Loader from '../../ui/loader'; import Button from '../../ui/button'; import Infobox from '../../ui/infobox/index'; import { DEFAULT_LOADER_COLOR, LOCAL_SERVER, LIVE_FRANZ_API, } from '../../../config'; import User from '../../../models/User'; const messages = defineMessages({ headline: { id: 'settings.account.headline', defaultMessage: 'Account', }, headlineDangerZone: { id: 'settings.account.headlineDangerZone', defaultMessage: 'Danger Zone', }, accountEditButton: { id: 'settings.account.account.editButton', defaultMessage: 'Edit account', }, invoicesButton: { id: 'settings.account.headlineInvoices', defaultMessage: 'Invoices', }, 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 Ferdium 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!', }, yourLicense: { id: 'settings.account.yourLicense', defaultMessage: 'Your Ferdium License:', }, accountUnavailable: { id: 'settings.account.accountUnavailable', defaultMessage: 'Account is unavailable', }, accountUnavailableInfo: { id: 'settings.account.accountUnavailableInfo', defaultMessage: 'You are using Ferdium without an account. If you want to use Ferdium with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.', }, }); interface IProp extends WrappedComponentProps { user: User; isLoading: boolean; userInfoRequestFailed: boolean; isLoadingDeleteAccount: boolean; isDeleteAccountSuccessful: boolean; server: string; retryUserInfoRequest: () => void; deleteAccount: () => void; openEditAccount: () => void; openInvoices: () => void; } @observer class AccountDashboard extends Component { render() { const { user, isLoading, userInfoRequestFailed, retryUserInfoRequest, deleteAccount, isLoadingDeleteAccount, isDeleteAccountSuccessful, openEditAccount, openInvoices, server, } = this.props; const { intl } = this.props; const isUsingWithoutAccount = server === LOCAL_SERVER; const isUsingFranzServer = server === LIVE_FRANZ_API; return (
{intl.formatMessage(messages.headline)}
{isUsingWithoutAccount && ( <>

{intl.formatMessage(messages.accountUnavailable)}

{intl.formatMessage(messages.accountUnavailableInfo)}

)} {!isUsingWithoutAccount && ( <> {isLoading && } {!isLoading && userInfoRequestFailed && ( {intl.formatMessage(messages.userInfoRequestFailed)} )} {!userInfoRequestFailed && ( <> {!isLoading && ( <>

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

{user.organization && `${user.organization}, `} {user.email}

{user.isSubscriptionOwner && isUsingFranzServer && (

{intl.formatMessage(messages.yourLicense)}

Franz

)} )} {isUsingFranzServer && (

{intl.formatMessage(messages.headlineDangerZone)}

{!isDeleteAccountSuccessful && (

{intl.formatMessage(messages.deleteInfo)}

)} {isDeleteAccountSuccessful && (

{intl.formatMessage(messages.deleteEmailSent)}

)}
)} )} )}
); } } export default injectIntl(AccountDashboard);