import React, { Component } from 'react'; import PropTypes from 'prop-types'; import { defineMessages, intlShape } from 'react-intl'; import { inject, observer } from 'mobx-react'; import { ProBadge } from '@meetfranz/ui'; import Link from '../../ui/Link'; import { workspaceStore } from '../../../features/workspaces'; import UIStore from '../../../stores/UIStore'; import UserStore from '../../../stores/UserStore'; import { serviceLimitStore } from '../../../features/serviceLimit'; const messages = defineMessages({ availableServices: { id: 'settings.navigation.availableServices', defaultMessage: '!!!Available services', }, yourServices: { id: 'settings.navigation.yourServices', defaultMessage: '!!!Your services', }, yourWorkspaces: { id: 'settings.navigation.yourWorkspaces', defaultMessage: '!!!Your workspaces', }, account: { id: 'settings.navigation.account', defaultMessage: '!!!Account', }, team: { id: 'settings.navigation.team', defaultMessage: '!!!Manage Team', }, settings: { id: 'settings.navigation.settings', defaultMessage: '!!!Settings', }, supportFerdi: { id: 'settings.navigation.supportFerdi', defaultMessage: '!!!Support Ferdi', }, logout: { id: 'settings.navigation.logout', defaultMessage: '!!!Logout', }, }); export default @inject('stores') @observer class SettingsNavigation extends Component { static propTypes = { stores: PropTypes.shape({ ui: PropTypes.instanceOf(UIStore).isRequired, user: PropTypes.instanceOf(UserStore).isRequired, }).isRequired, serviceCount: PropTypes.number.isRequired, workspaceCount: PropTypes.number.isRequired, }; static contextTypes = { intl: intlShape, }; render() { const { serviceCount, workspaceCount, stores } = this.props; const { isDarkThemeActive } = stores.ui; const { router, user } = stores; const { intl } = this.context; const isLoggedIn = Boolean(localStorage.getItem('authToken')); return (
{intl.formatMessage(messages.availableServices)} {intl.formatMessage(messages.yourServices)} {' '} {serviceCount} {serviceLimitStore.serviceLimit !== 0 && ( `/${serviceLimitStore.serviceLimit}` )} {workspaceStore.isFeatureEnabled ? ( {intl.formatMessage(messages.yourWorkspaces)} {' '} {workspaceStore.isPremiumUpgradeRequired ? ( ) : ( {workspaceCount} )} ) : null} {intl.formatMessage(messages.account)} {intl.formatMessage(messages.team)} {!user.data.isPremium && ( )} {intl.formatMessage(messages.settings)} {intl.formatMessage(messages.supportFerdi)} { isLoggedIn ? intl.formatMessage(messages.logout) : 'Login'}
); } }